Чтение данных из COM-порта
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Чтение данных из COM-порта

Чтение данных из COM-порта

Ответ
Поиск в этой теме
Непрочитано 08.08.2015, 17:49 #1
Чтение данных из COM-порта
Supermax
 
Руководитель фирмы
 
Москва
Регистрация: 28.03.2007
Сообщений: 1,831

Надо читать буфер COM-порта. Зачем? - Надо. Опробовал "Scripting.FileSystemObject" и "MSCOMMLib.MSComm". И там и там есть подводные камни.
"Scripting.FileSystemObject" - никак не могу найти как программно отключить управление потоком. Только через Hyper Terminal руками могу. По идее MSCOMMLib.MSComm имеет свойство Handshaking, но оно явно не работает. Перевод его в 0 ничего не даёт.

Если в чистую работать с MSCOMMLib.MSComm, то проблем ещё больше. Читать то всё читает, но чуть забыл закрыть порт - пиши пропало. Если что-то не то в буфер залезло - ошибки выдаёт.
Надо все чтения свойств контролем ошибок обвешивать, а vl-catch-all-apply не хочет передавать список аргументов.

Может кто знает что-нибудь альтернативное этим СОМ-объектам? Или есть опыт?

Вот это самое лучшее решение, но как программно отключать управление потоком?
Код:
[Выделить все]
 
(setq objcart (vlax-get-or-create-object "Scripting.FileSystemObject"))
(setq cart-list (vlax-invoke-method objcart 'OpenTextFile "com9:" 1 0 nil))
(setq izm (vlax-invoke-method cart-list 'ReadLine))
(vlax-invoke-method cart-list 'Close)
(setq izm1 (substr izm 7 16))
(alert izm1)
(vlax-release-object objcart)
Сразу поясню: Я через СОМ-порт читаю карточки Mifare (БУ от метрополитена) Мне надо их номер записывать в словарь группы элементов.

После получения строки "Mifare[34591961C3DA66] UL (0044,00) 097,06489" я её обрезаю по квадратные скобки.

Последний раз редактировалось Supermax, 08.08.2015 в 19:45.
Просмотров: 3687
 
Непрочитано 08.08.2015, 21:09
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


может пора переходить на NET?
trir вне форума  
 
Автор темы   Непрочитано 08.08.2015, 21:24
#3
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Если бы кто по башке дал и синтаксис туда загнал.

Не, как оказалось дело гораздо хуже чем управление потоком. Что-то я не до настраиваю в порту.

Вот решение на MSCOMMLib.MSComm

Код:
[Выделить все]
 
(setq com9 (vlax-get-or-create-object "MSCOMMLib.MSComm"))
(vlax-put-property com9 "CommPort" 9)
(vlax-put-property com9 "InputLen" 0)
(vlax-put-property com9 "Settings" "9600,n,8,1")
(vlax-put-property com9 "PortOpen" 1)

;тут надо приложить карточку
(alert "Приложите карточку")
(setq izm (vlax-get-property com9 "Input"))
(setq izm1 (substr izm 7 16))
(alert izm1)


(vlax-put-property com9 "PortOpen" 0)
(vlax-release-object com9)
Недостатком такого решения является необходимость прикладывать карточку в процессе выполнения скрипта. Но зато работает безупречно.

Последний раз редактировалось Supermax, 08.08.2015 в 22:38.
Supermax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Чтение данных из COM-порта



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
SCAD Office 21.1. Обсуждение. Клименко Ярослав SCAD 633 03.10.2015 14:10
Как провести чтение, сортировку и сохранение данных из тестового файла h6784rfg6 Программирование 36 20.09.2013 14:42
Чтение расширенных данных в Delphi remlin Программирование 2 07.07.2008 17:52
чтение данных из файла Александер Программирование 6 08.09.2005 10:24