Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2013, 13:05   #11
AnDrOiD73
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 21
По умолчанию

Ставил, результат не меняется.
пробовал и port.readByte - вылетает исключение из-за того что вышло время ожидания. Т.е. ничего не приходит, а значит я передаю неверную команду. Думаю все дело в символе возврата каретки - как-то по другому надо его отправлять.

Последний раз редактировалось AnDrOiD73; 17.12.2013 в 13:07.
AnDrOiD73 вне форума Ответить с цитированием
Старый 17.12.2013, 13:49   #12
simples
Форумчанин
 
Регистрация: 03.10.2013
Сообщений: 142
По умолчанию

PortMon программу попробуйте (не уверен в названии) - помониторьте порт при работе чужой программы (когда все норм работает) и свою поделку. Лог покажет кто где... неправ
simples вне форума Ответить с цитированием
Старый 17.12.2013, 14:32   #13
AnDrOiD73
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 21
По умолчанию

Цитата:
Сообщение от simples Посмотреть сообщение
PortMon программу попробуйте (не уверен в названии) - помониторьте порт при работе чужой программы (когда все норм работает) и свою поделку. Лог покажет кто где... неправ
под Win 7 x64 не хочет работать программка
при запуске выдает "Error 2" и не запускается, а если запустится (раза с 20), то в логе ничего нет.
AnDrOiD73 вне форума Ответить с цитированием
Старый 17.12.2013, 14:40   #14
simples
Форумчанин
 
Регистрация: 03.10.2013
Сообщений: 142
По умолчанию

Гм... ну или с помощью инструмента(не обяз-но именно этого), или методом научного тыка.
Я - за первый вариант(гуглили проблему не запуска? виртуалку пробовали?).
simples вне форума Ответить с цитированием
Старый 17.12.2013, 18:22   #15
AnDrOiD73
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 21
По умолчанию

Скачал Advanced Serial Port monitor 4.3.9
И Terminal и моя программа отправляют: "H:<CR>" (в HEX: 48 3A 0D).
Т.е. получается как бы все правильно у меня тоже, но не работает.
AnDrOiD73 вне форума Ответить с цитированием
Старый 17.12.2013, 23:24   #16
simples
Форумчанин
 
Регистрация: 03.10.2013
Сообщений: 142
По умолчанию

Полные логи выложите и того и того варианта отправки/получения.
simples вне форума Ответить с цитированием
Старый 18.12.2013, 12:36   #17
AnDrOiD73
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 21
По умолчанию

Лог при работе с Terminal:
Цитата:
<20131218121126.709 SYS>
COM открыт
<20131218121126.713 SYS>
Скорость передачи 115200
<20131218121126.713 SYS>
RTS выключен
<20131218121126.714 SYS>
DTR выключен
<20131218121126.716 SYS>
Биты данных=8, Стоповые биты=1, Четность=None
<20131218121126.716 SYS>
Служ. символы: Eof=0x00, Error=0x00, Break=0x00, Event=0x00, Xon=0x11, Xoff=0x13
<20131218121126.716 SYS>
Контроль передачи: ControlHandShake=(), Замена=(), Лимит Xon=2048, Лимит Xoff=1
<20131218121126.716 SYS>
Очистка порта: RXABORT, RXCLEAR, TXABORT, TXCLEAR
<20131218121126.716 SYS>
Размер вх./исх. очереди 8192/2048
<20131218121126.716 SYS>
Таймауты: ReadInterval=1,
ReadTotalTimeoutMultiplier=0,
ReadTotalTimeoutConstant=1,
WriteTotalTimeoutMultiplier=0,
WriteTotalTimeoutConstant=0
<20131218121126.732 SYS>
DTR выключен
<20131218121126.732 SYS>
RTS выключен
<20131218121129.777 TX>
H:<CR>
<20131218121129.828 RX>
H: OK<CR><LF>
<20131218121131.480 SYS>
COM закрыт
Лог при работе с моей программой:
Код:
<20131218122536.935 SYS>
COM открыт
<20131218122536.941 SYS>
Скорость передачи 115200
<20131218122536.941 SYS>
RTS включен
<20131218122536.942 SYS>
DTR выключен
<20131218122536.944 SYS>
Биты данных=8, Стоповые биты=1, Четность=None
<20131218122536.944 SYS>
Служ. символы: Eof=0x1A, Error=0x00, Break=0x00, Event=0x1A, Xon=0x11, Xoff=0x13
<20131218122536.944 SYS>
Контроль передачи: ControlHandShake=(), Замена=(TRANSMIT_TOGGLE, RTS_CONTROL), Лимит Xon=4096, Лимит Xoff=4096
<20131218122536.948 SYS>
Скорость передачи 115200
<20131218122536.948 SYS>
RTS включен
<20131218122536.949 SYS>
DTR выключен
<20131218122536.951 SYS>
Биты данных=8, Стоповые биты=1, Четность=None
<20131218122536.951 SYS>
Служ. символы: Eof=0x1A, Error=0x00, Break=0x00, Event=0x1A, Xon=0x11, Xoff=0x13
<20131218122536.951 SYS>
Контроль передачи: ControlHandShake=(), Замена=(TRANSMIT_TOGGLE, RTS_CONTROL), Лимит Xon=4096, Лимит Xoff=4096
<20131218122536.952 SYS>
DTR выключен
<20131218122536.956 SYS>
Скорость передачи 115200
<20131218122536.956 SYS>
RTS выключен
<20131218122536.957 SYS>
DTR выключен
<20131218122536.959 SYS>
Биты данных=8, Стоповые биты=1, Четность=None
<20131218122536.959 SYS>
Служ. символы: Eof=0x1A, Error=0x00, Break=0x00, Event=0x1A, Xon=0x11, Xoff=0x13
<20131218122536.959 SYS>
Контроль передачи: ControlHandShake=(), Замена=(), Лимит Xon=4096, Лимит Xoff=4096
<20131218122536.959 SYS>
RTS выключен
<20131218122536.959 SYS>
Таймауты: ReadInterval=-1, ReadTotalTimeoutMultiplier=-1, ReadTotalTimeoutConstant=-2, WriteTotalTimeoutMultiplier=0, WriteTotalTimeoutConstant=0
<20131218122536.960 SYS>
Размер вх./исх. очереди 8192/2048
<20131218122536.961 TX>
H:<CR>
А вот и решение (а точнее костыль):
У меня был код:
Код:
string getTextConnect = "H:";
ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
byte[] b1 = ascii.GetBytes(getTextConnect);
port.Write(b1, 0, b1.Length);
port.Write(new byte[] { 13 }, 0, 1);
string s1 = port.ReadExisting();
MessageBox.Show(s1);
Я пробовал разные варианты, иногда еще закрывал порт после всего:
port.Close();
Пробовал очень много разных вариантов... реально очень много, а заработала банальная штука:
Мое сообщение - это: "H:" + возврат каретки - это 3 байта (в ASCII): 72, 58, 13.
Код:
port.Write(new byte[] {72}, 0, 1);
port.Write(new byte[] { 58 }, 0, 1);
port.Write(new byte[] { 13 }, 0, 1);
После такого кода - я прекрасно получаю ответ от устройства. Главное НЕ закрывать порт пока не получим ответное сообщение, иначе мы его не получим

Меня такой код, честно говоря, не очень радует. Может есть у кого нибудь мысли почему так получается?

p.s.: вот такая запись тоже работает:
Код:
string getTextConnect = "H:\r";
ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
byte[] b1 = ascii.GetBytes(getTextConnect);
foreach (byte element in b1)
{
     port.Write(new byte[] { element} , 0, 1);
}

Последний раз редактировалось AnDrOiD73; 18.12.2013 в 13:02.
AnDrOiD73 вне форума Ответить с цитированием
Старый 18.12.2013, 18:49   #18
simples
Форумчанин
 
Регистрация: 03.10.2013
Сообщений: 142
По умолчанию

Ну то что не надо закрывать двери у которых ждешь нужного тебе - это по моему простая логика
Грац с костылем - уже что-то

В логах вижу различие использования RTS - попробуйте с ним поигратся (RtsEnable) в Вашей программе.
simples вне форума Ответить с цитированием
Старый 18.12.2013, 19:09   #19
AnDrOiD73
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 21
По умолчанию

да я обычно и не закрывал двери специально... это потом уже начал пробовать по-разному.
В программе выставлен флаг: port.RtsEnable = false;
В логе c моей программой RTS упоминается 4 раза. В 2-х последних = выключен.
В общем теперь все остальные команды тоже отправляю через foreach и все работает.
Как то так.
simples, спасибо за помощь!
AnDrOiD73 вне форума Ответить с цитированием
Старый 18.12.2013, 19:20   #20
simples
Форумчанин
 
Регистрация: 03.10.2013
Сообщений: 142
По умолчанию

Пж
Еще вариантик - port.BaseStream.Flush() (после записи в порт).
И паузу ставьте перед чтением(секунда или более. Или событие DataReceived используйте) - ну нет еще космических скоростей в COM портах.

Последний раз редактировалось simples; 18.12.2013 в 19:23.
simples вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Windows Virtual PC genrix Windows 6 25.02.2013 00:13
iCore Virtual Accounts. Забудь про переустановку Windows. Alepro Софт 15 08.02.2011 07:22
virtual COM, Ethrnet and COM port Baron9186 Работа с сетью в Delphi 2 01.11.2010 10:37
Можно ли подключить к web form windows form? Manonia Windows Forms 0 20.10.2010 05:28
Windows form в C++ xnise Помощь студентам 1 15.09.2010 16:31