0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
|
1 | |
.NET 2.x serial port19.10.2011, 16:42. Показов 5296. Ответов 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, описание устройства,предоставленное шиной Принимаемые данные с датчика через Serial port преобразовать в RGB |
17794 / 12945 / 3381
Регистрация: 17.09.2011
Сообщений: 21,228
|
|
19.10.2011, 17:09 | 2 |
Насколько мне известно, штатными средствами - никак.
Может быть можно сделать через WinAPI, но я в нем не силен. А можно поинтересоваться для чего нужно менять значения?
0
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
|
20.10.2011, 08:01 [ТС] | 3 |
пишу программу с ком портом . и смотрю тоже как успешно работает другая программа написанная на делфи. вот ищу разницу. так как исходника нету.
А может есть сторонняя свободная библиотека с богатыми пропрети на все настройки порта все такое не используя winapi.
0
|
17794 / 12945 / 3381
Регистрация: 17.09.2011
Сообщений: 21,228
|
|
20.10.2011, 22:42 | 4 |
b.dulat, вы знаете, я работал со множеством различных протоколов, реализуемыех через серийный порт и никогда не имел проблем с "несовпадением" приведенных вами значений.
Если реализовать конкретный протокол и проводить обработку полученных байт самостоятельно, проблем быть не должно со штатным SerialPort. Что касается сторонних библиотек - не интересовался, но вроде как видел что-то подобное пару раз. Погуглите .NET serial port library
1
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
|
21.10.2011, 16:16 [ТС] | 5 |
Сейчас делаю печать(термо принтер). работаю как говорил с ком портом.
Записываю команду на порт и жду ответа от принтера - LabelPrinted. Так вот ответ идет от принтера 250 мили сек. И за 1 сек печатаю всего 3 этикетки. А должно быть 10. А в той программе на делфи ответ приходит очень быстро. Вот не могу понять какая разница между ними. Почему ответ от принтера может идти долго?
0
|
17794 / 12945 / 3381
Регистрация: 17.09.2011
Сообщений: 21,228
|
|
21.10.2011, 21:01 | 6 |
b.dulat, именно ответ приходит долго или обработка команды занимает длительное время?
Не так давно реализовывал протокол VDCP, так там контроллер посылает запрос девайсу каждые 40 мсек, причем по спецификации девайс должен начать отправку ответа не позднее чем через 6 мсек после получения последнего байта команды. Использовал System.Net.Ports.SerialPort - никаких проблем не возникало. Остальные настройки порта совпадают с дельфийскими? Может стоит глянуть на реализацию получения команды - проблема может быть там.
0
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
|||||||||||
22.10.2011, 06:34 [ТС] | 7 | ||||||||||
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
|
17794 / 12945 / 3381
Регистрация: 17.09.2011
Сообщений: 21,228
|
|
22.10.2011, 11:41 | 8 |
b.dulat, а можно глянуть часть кода, где вы инициализируете порт?
0
|
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
|
|
22.10.2011, 16:06 | 9 |
С помощью API функции SetCommState с использованием структуры DCB которая и предоставляет возможность настройки IOCTL_SERIAL_SET_CHAR
0
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
||||||||||||||||
24.10.2011, 08:00 [ТС] | 10 | |||||||||||||||
вот:
0
|
86 / 86 / 6
Регистрация: 14.01.2011
Сообщений: 265
|
|
24.10.2011, 08:13 | 11 |
Можно все быстро и через WinApi реализовать! Исходники для программ передачи/приёма символов через com-порты
0
|
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
|
|
24.10.2011, 08:13 | 12 |
b.dulat, я тож всегда юзал и юзаю стандартный класс и проблем не возникало. А можно взглянуть на спецификацию протокола?...
0
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
|
24.10.2011, 08:25 [ТС] | 13 |
0
|
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
|
|
24.10.2011, 08:26 | 14 |
0
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
|
24.10.2011, 08:33 [ТС] | 15 |
если честно не знаю что такой протокол ком порта. подскажите какие бывают. и откуда взять? спасибо
0
|
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
|
|
24.10.2011, 08:43 | 16 |
Протокол - понятие условное, под ним подразумеваются правила посылки/приемам данных и их последовательность. Но все всегда сводится к одному - 1/0 на пины 2 и 3
Под правилами посылки/приемам данных подразумевается договоренность, что, например,
И то и и другое - договоренность, заранее оговоренные "правила игры" - общения. Но(!), как я уже сказал, все всегда сводится к байтам, а они к 1/0 на пинах 2 и 3 RS-232 говоря простым языком "Правила приема/передачи данных" - этож целых ТРИ слова! Зачем "платить больше"(?!), если можно сказать - "протокол", а это ОДНО слово, а не ТРИ
1
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
|
24.10.2011, 08:58 [ТС] | 17 |
вложил programmers manual принтера. на странице 227 есть General Purpose Input Output (GPIO) Port Applications. Это именно то описание?
0
|
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
|
|
24.10.2011, 09:08 | 18 |
Классная дока для принтера, тока много "воды".
Тебе надо прочитать для начала:
Весь протокол основывается на Байт 1 - команда Байт 2-N - параметры
0
|
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 9
|
|
24.10.2011, 13:26 [ТС] | 19 |
через эти команды и формируется разметка. В принципе это все используется.
а что насчет того что принтер отвечает так долго? пробовал скорость у порта ставить 115000. все равно медленно
0
|
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
|
|
24.10.2011, 13:45 | 20 |
А ты попробуй убрать все лишнее, оставь только NAK и посмотри на скорость. Если
1. открыть порт 2. послать туда 10 000 NAK-ов 3. закрыть порт будет проходить долго, то тогда действительно, стоит обратить взор в сторону класса SerialPort А если же быстро, то у тебя просто код так тормозит. Есть еще один момент: Порой девайс выдает много-много байт ответа. Кто-то собирает данные путем цикла с по-байтовым чтением и это долго. А кто-то читает массивами (например byte[1024]) и это намного быстрее.
0
|
24.10.2011, 13:45 | |
24.10.2011, 13:45 | |
Помогаю со студенческими работами здесь
20
Serial port. Можно ли определить подключено ли внешнее устройство? HDD serial number Реалтаймовое чтение из Serial порта Работа с массивом, принимаемым по serial interface, как с типом данных byte Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи | |||||
Преобразование полей (элементов управления содержимым) в обычный текст
РоΜа 23.01.2025
Возникла необходимость преобразовать поля в текст (те, что на вкладке разработчик добавляются) . Помучившись родил следующее:
Sub ПоляВТекст()
Преобразует все поля в текст (даты, текст,. . .
|
Как проверить существование директории в скрипте Bash
bt_guru 23.01.2025
При разработке скриптов Bash одной из ключевых задач является корректная работа с файловой системой, где особое место занимает проверка существования директорий. Эта операция становится критически. . .
|
Как работают срезы (slice) в Python
bytestream 23.01.2025
Python предоставляет разработчикам мощный и гибкий инструмент для работы с последовательностями данных - срезы (slices). Эта функциональность позволяет извлекать, модифицировать и управлять. . .
|
Как удалить подмодуль (submodule) в Git
bytestream 23.01.2025
При работе с крупными проектами в системе контроля версий Git разработчики часто сталкиваются с необходимостью управления зависимостями и внешними компонентами. Подмодули (submodules) представляют. . .
|
В чем разница между @staticmethod и @classmethod в Python. Декораторы методов
bytestream 23.01.2025
В Python декораторы методов представляют собой мощный инструмент, позволяющий модифицировать поведение функций и методов без изменения их исходного кода. Эта возможность является одной из. . .
|
Как преобразовать InputStream в String в Java
bytestream 23.01.2025
В мире Java-разработки работа с потоками данных является одной из ключевых операций при создании современных приложений. InputStream, как фундаментальный класс для обработки входных потоков данных,. . .
|
Как обновить форк (ответвление) репозитория в Git
bytestream 23.01.2025
Одним из наиболее мощных инструментов Git для организации совместной работы является механизм форкинга репозиториев, который позволяет создавать независимые копии проектов для дальнейшей разработки. . . .
|
Как работает async/await в C#. Асинхронное программирование в .NET
bytestream 23.01.2025
Введение в асинхронное программирование
Асинхронное программирование представляет собой важнейшую концепцию современной разработки программного обеспечения, особенно в контексте создания. . .
|
КуМир: полное руководство
bytestream 23.01.2025
Введение в КуМир: история создания и назначение
КуМир (Комплект Учебных МИров) представляет собой образовательную среду программирования, которая была создана для обучения основам алгоритмизации и. . .
|
Что такое OLAP. Где и как использовать многомерный анализ данных
bytestream 23.01.2025
Введение в OLAP-технологии
В современном мире бизнес-аналитика и обработка больших массивов данных играют ключевую роль в принятии стратегических решений. Организации накапливают огромные объемы. . .
|
MongoDB: что это, для чего нужна и как использовать
bytestream 23.01.2025
Введение в MongoDB: современная документоориентированная СУБД
В современном мире разработки программного обеспечения выбор правильной системы управления базами данных является критически важным. . .
|
Как использовать закрытый ключ шифрования в Git. Шифрование в Git
bytestream 23.01.2025
Установка и настройка закрытых ключей в Git предоставляет дополнительный уровень безопасности для работы с репозиториями. Для начала необходимо создать пару ключей, обычно это осуществляется с. . .
|