Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
09.04.2013, 22:24
|
|||
---|---|---|---|
|
|||
SerialProt и Терминал |
|||
#18+
Здравствуйте, вопрос больше для людей которые работали ли с ком-портом либо приложением Terminal Работаю с COM-порт. Пример тут Есть у меня "черный ящик", если его замыкать на прием - то он возвращает то же что ему и посылаешь, т.е в serialPort.WriteLine("L;13;12;12;13;15;#013") в потоке чтения я считываю эту же строку через serialPort.ReadLine(); Но в устройстве есть функция ответа на запрос и вот тут мой код(пример из мсдн) не срабатывает, т.е строку я передаю, но в ответ ничего не получаю. При этом если подключить программу Terminal, настроить те же параметры(Stop bits, handshake и т.д) и передать ту же строку "L;13;12;12;13;15;#013" то на выходе я получаю от устройства ответ ON;01;02;02;01;05;NULL;OK;00. Подскажите пожалуйста что такого в терминале реализовано, чего нет в моем коде? Буду весьма благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.04.2013, 08:31
|
|||
---|---|---|---|
SerialProt и Терминал |
|||
#18+
MSDN: SerialPort.WriteLine - Записывает указанную строку и значение NewLine в выходной буфер. 1, Попробуйте значению NewLine у порта присвоить "". 2. Попробуйте использовать метод Write вместо WriteLine, предварительно перегнав вашу строку в массив байт ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.04.2013, 08:37
|
|||
---|---|---|---|
SerialProt и Терминал |
|||
#18+
Стоп. Возможно, терминал интерпретирует #013 как байт 0D - возврат каретки, а не посылает набор байт <#> 0x30 0x31 0x33. Попробуйте вместо serialPort.WriteLine("L;13;12;12;13;15;#013") послать serialPort.WriteLine("L;13;12;12;13;15;\r") ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.04.2013, 09:56
|
|||
---|---|---|---|
|
|||
SerialProt и Терминал |
|||
#18+
PallarisСтоп. Возможно, терминал интерпретирует #013 как байт 0D - возврат каретки, а не посылает набор байт <#> 0x30 0x31 0x33. Попробуйте вместо serialPort.WriteLine("L;13;12;12;13;15;#013") послать serialPort.WriteLine("L;13;12;12;13;15;\r") WriteLine - добавляет в конец соответствующие коды возврата/перехода Либо не пиши в конце строки эти коды, либо используй просто Write(... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.04.2013, 10:51
|
|||
---|---|---|---|
|
|||
SerialProt и Терминал |
|||
#18+
Я тоже так думал ребят, просто инженер устройства вшил в микроконтроллер именно #013 как окончание сообщения, я если честно даже не знаю откуда он взял этот символ - по-моему С++. я пробовал и serialPort.WriteLine(string.Format("{0}{1}", "L;13;12;12;13;15", serialPort.newLine)) и serialPort.Write(string.Format("{0}{1}", "L;13;12;12;13;15", serialPort.newLine)) и с \n и с \r и \r\n пробовал и прочее... Причем в сети много примеров работы с портом на C# и ни один не может получить ответ. При этом 3 исходника на Vicual C++ отправляют и нормально получают ответ. Вот думаю может дело в разнице хранения строк в памити и обращения к ним? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.04.2013, 11:12
|
|||
---|---|---|---|
SerialProt и Терминал |
|||
#18+
Точно пробовали SerialPort.Write ? Тогда установите какой-нибудь listener com-порта (например advanced serial port monitor) и сравните в байтовом виде, что посылаете вы, и что посылает терминал. Таких чудес не бывает ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.04.2013, 11:26
|
|||
---|---|---|---|
|
|||
SerialProt и Терминал |
|||
#18+
Pallaris, гранд мерси! Всем остальным тоже спасибо, в ближайшее время попробую - отпишу. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.04.2013, 23:20
|
|||
---|---|---|---|
|
|||
SerialProt и Терминал |
|||
#18+
Pallaris, Еще раз спасибо большое! Протрассировал терминал, он в конце добавлял 0x0D(в десятичном виде), добавил, все получил. Погуглил по идее 0D это и есть (13 - вовзрат каретки), но почему-то \r не работает. Вообще в строковом виде не работает, приходится через буфер байт - если это кому-то интересно ) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=20&tablet=1&tid=1404863]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 173ms |
0 / 0 |