|
Передача данных через компоненту Mscomm | ☑ | ||
|---|---|---|---|---|
|
0
pomkka
04.09.15
✎
09:02
|
Здравствуйте. Подскажите, пожалуйста. Ситуация следующая: передаю данные через COM порт на Arduino, код следующий:
ComPort = Новый COMОбъект("MsCommLib.MsComm"); Попытка ComPort.InBufferCount = 0; ComPort.Settings = "9600,n,8,1"; ComPort.CommPort = 3; ComPort.Handshaking = 1; ComPort.RThreshold = 1; ComPort.SThreshold = 1; ComPort.InputLen = 0; ComPort.RTSEnable = 1; ComPort.InputMode = 0 ; ComPort.PortOpen = Истина; ComPort.Output = Символ(ЭлементыФормы.Команда.Значение); Исключение Сообщить(ОписаниеОшибки()); Отказ = Истина; КонецПопытки; В целом, все работает, но есть одно большое НО. Данные передаются только если в режиме отладки некоторое время задержаться на строке ComPort.Output. Даже не знаю с чем это связано, может у кого-нибудь есть идеи как это можно исправить? |
|||
|
1
Zamestas
04.09.15
✎
09:04
|
(1) После открытия и перед началом передачи подождать чуток - не?
|
|||
|
2
ProgAL
04.09.15
✎
09:43
|
||||
|
3
pomkka
07.09.15
✎
12:50
|
(1) Не прокнуло, может я что не так делал, но задержку делал банально перебором значений цикла, результат нулевой
|
|||
|
4
pomkka
07.09.15
✎
12:51
|
(2) Спасибо за ссылку, но вот значение функции ПодождатьПриемаСимволовСТаймаутом автор так и не написал(
|
|||
|
5
Лефмихалыч
07.09.15
✎
13:01
|
(3) лучше ping'ом паузить - цикл твой поток на 100% грузит, такое ожидание может не принести результат
|
|||
|
6
Garykom
гуру
07.09.15
✎
13:06
|
ComPort.PortOpen = 1;
ComPort.Output = Символ(ЭлементыФормы.Команда.Значение); ComPort.PortOpen = 0; |
|||
|
7
spectre1978
07.09.15
✎
14:12
|
(0) после передачи данных поток должен подождать, пока устройство примет данные и ответит. Задержка может быть до десятков миллисекунд.
|
|||
|
8
pomkka
07.09.15
✎
16:04
|
(6) а есть ли разница? На всякий случай попробовал, результат аналогичен.
|
|||
|
9
pomkka
07.09.15
✎
16:08
|
(5) Спасибо большое, очень помогли. Вот работающий код:
Процедура глПауза(Сек) scr = Новый COMОбъект("WScript.Shell"); scr.Run("ping 127.0.0.1 -n "+СокрЛП(Число(Сек)),0,1); КонецПроцедуры; |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |