|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
|
.NET 2.x serial port19.10.2011, 16:42. Показов 5787. Ответов 19
Метки нет (Все метки)
Здравствуйте.
Использую стандартные классы .net для работы с ком портом. Работу с портом прослушал программой Portmon. Вот кусочек прослушки: 22 12:52:53 ConsoleApplicat IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8 23 12:52:53 ConsoleApplicat IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:1a ERR:0 BRK:0 EVT:1a XON:11 XOFF:13 24 12:52:53 ConsoleApplicat IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:8 Replace:80 XonLimit:1024 XoffLimit:1024 Возник вопрос как изменить в .net значения у IOCTL_SERIAL_SET_CHAR. Хочу изменить так IOCTL_SERIAL_SET_CHAR = EOF:1 ERR:40 BRK:40 EVT:0 XON:11 XOFF:13
0
|
|
| 19.10.2011, 16:42 | |
|
Ответы с готовыми решениями:
19
Serial port. Изменение значений Прием и передача строки Serial Port Serial Port, описание устройства,предоставленное шиной |
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 19.10.2011, 17:09 | |
|
Насколько мне известно, штатными средствами - никак.
Может быть можно сделать через WinAPI, но я в нем не силен. А можно поинтересоваться для чего нужно менять значения?
0
|
|
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
||
| 20.10.2011, 08:01 [ТС] | ||
|
А может есть сторонняя свободная библиотека с богатыми пропрети на все настройки порта все такое не используя winapi.
0
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 20.10.2011, 22:42 | |
|
b.dulat, вы знаете, я работал со множеством различных протоколов, реализуемыех через серийный порт и никогда не имел проблем с "несовпадением" приведенных вами значений.
Если реализовать конкретный протокол и проводить обработку полученных байт самостоятельно, проблем быть не должно со штатным SerialPort. Что касается сторонних библиотек - не интересовался, но вроде как видел что-то подобное пару раз. Погуглите .NET serial port library
1
|
|
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
|
| 21.10.2011, 16:16 [ТС] | |
|
Сейчас делаю печать(термо принтер). работаю как говорил с ком портом.
Записываю команду на порт и жду ответа от принтера - LabelPrinted. Так вот ответ идет от принтера 250 мили сек. И за 1 сек печатаю всего 3 этикетки. А должно быть 10. А в той программе на делфи ответ приходит очень быстро. Вот не могу понять какая разница между ними. Почему ответ от принтера может идти долго?
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 21.10.2011, 21:01 | |
|
b.dulat, именно ответ приходит долго или обработка команды занимает длительное время?
Не так давно реализовывал протокол VDCP, так там контроллер посылает запрос девайсу каждые 40 мсек, причем по спецификации девайс должен начать отправку ответа не позднее чем через 6 мсек после получения последнего байта команды. Использовал System.Net.Ports.SerialPort - никаких проблем не возникало. Остальные настройки порта совпадают с дельфийскими? Может стоит глянуть на реализацию получения команды - проблема может быть там.
0
|
|
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
|||||||||||
| 22.10.2011, 06:34 [ТС] | |||||||||||
|
kolorotur, скорее всего все таки ответ приходит долго, а не само распечатывание. Если не ждать ответа и отправлять, печать идет быстро.
Не совпадает настройки IOCTL_SERIAL_SET_CHAR, IOCTL_SERIAL_SET_TIMEOUTS. Реализация получения ответа такая: у класса ком порта есть ивент DataReceived. не него подписался. в методе выполняю ReadExisting(). дальше смотрю этот ли ответ. Вот что то вроде лога печати 3-х этикеток, фиксировал время: 1Begin-время начало печати 1 этикетки. Вход в цикл. DO Write() 1- время до команды записи в порт Write(string). Write() 1 время после команды записи в порт Write(string). DataReceived:- время когда пришло ответ Получили ответ :time1=0,2499968sec; - время после записи и до получения ответов:
0
|
|||||||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 22.10.2011, 11:41 | |
|
b.dulat, а можно глянуть часть кода, где вы инициализируете порт?
0
|
|
|
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
|
||
| 22.10.2011, 16:06 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
||||||||||||||||
| 24.10.2011, 08:00 [ТС] | ||||||||||||||||
|
вот:
0
|
||||||||||||||||
|
86 / 86 / 6
Регистрация: 14.01.2011
Сообщений: 265
|
|
| 24.10.2011, 08:13 | |
|
Можно все быстро и через WinApi реализовать! Исходники для программ передачи/приёма символов через com-порты
0
|
|
|
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
|
|
| 24.10.2011, 08:13 | |
|
b.dulat, я тож всегда юзал и юзаю стандартный класс и проблем не возникало. А можно взглянуть на спецификацию протокола?...
0
|
|
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
|
| 24.10.2011, 08:25 [ТС] | |
|
0
|
|
|
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
|
|
| 24.10.2011, 08:26 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
||
| 24.10.2011, 08:33 [ТС] | ||
|
0
|
||
|
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
|
||
| 24.10.2011, 08:43 | ||
|
Под правилами посылки/приемам данных подразумевается договоренность, что, например,
И то и и другое - договоренность, заранее оговоренные "правила игры" - общения. Но(!), как я уже сказал, все всегда сводится к байтам, а они к 1/0 на пинах 2 и 3 RS-232 говоря простым языком "Правила приема/передачи данных" - этож целых ТРИ слова! Зачем "платить больше"(?!), если можно сказать - "протокол", а это ОДНО слово, а не ТРИ
1
|
||
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
||
| 24.10.2011, 08:58 [ТС] | ||
|
0
|
||
|
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
|
||
| 24.10.2011, 09:08 | ||
|
Тебе надо прочитать для начала:
Весь протокол основывается на Байт 1 - команда Байт 2-N - параметры
0
|
||
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
||
| 24.10.2011, 13:26 [ТС] | ||
|
а что насчет того что принтер отвечает так долго? пробовал скорость у порта ставить 115000. все равно медленно
0
|
||
|
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
|
||
| 24.10.2011, 13:45 | ||
|
1. открыть порт 2. послать туда 10 000 NAK-ов 3. закрыть порт будет проходить долго, то тогда действительно, стоит обратить взор в сторону класса SerialPort А если же быстро, то у тебя просто код так тормозит. Есть еще один момент: Порой девайс выдает много-много байт ответа. Кто-то собирает данные путем цикла с по-байтовым чтением и это долго. А кто-то читает массивами (например byte[1024]) и это намного быстрее.
0
|
||
| 24.10.2011, 13:45 | |
|
Помогаю со студенческими работами здесь
20
Serial port. Можно ли определить подключено ли внешнее устройство? HDD serial number Реалтаймовое чтение из Serial порта
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|