RS 232 прием на ПК
Добавлено: Ср июн 22, 2011 00:24:15
подскажите компонент для написания программы Delphi с примером для приема данных с ком порта
Это к пушистому Ploop-у - он у нас тут по Дэлфям специализируется..romanF1 писал(а):программы Delphi
... вот этого вполне хватит, чтобы читать/писать в СОМ-порт с помощью WinApi. На паскаль переписать недолго ИМХОromanF1 писал(а):подскажите компонент для написания программы Delphi с примером для приема данных с ком порта
Код: Выделить всё
hCom=CreateFile(pChar,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0, NULL);
if(hCom!=INVALID_HANDLE_VALUE) {
GetCommState(hCom, &dcb);
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hCom, &dcb); //
cto.ReadTotalTimeoutConstant = 2100;
SetCommTimeouts(hCom, &cto); ... как видим настройка DCB - 4 строчки. Еще забыли COMMTIMEOUTS, но настройка тоже проста... При использовании WinApi, с СОМ-портом можно работать хоть из Excel...Engineer_Keen писал(а):Чтобы работать с ком портом необязательно использовать компоненты, достаточно стандартных функций типа CreateFile, WriteFile, ReadFile. Только с настройками нужно будет немного повозиться (одна DCB чего стоит). .....
Ну да, просто остальные остаются по-умолчанию, но я их на всякий случай тоже настраиваюChipKiller писал(а):как видим настройка DCB - 4 строчки
Я ушел от компонентов после того, как при переходе с win98 на XP, они работать отказались, хотя наверно они просто устаревшие были...ChipKiller писал(а):При использовании WinApi, с СОМ-портом можно работать хоть из Excel...
... а компоненты зачем? все делается с помощью Declare из VBAEngineer_Keen писал(а):Я ушел от компонентов после того, как при переходе с win98 на XP, они работать отказались, хотя наверно они просто устаревшие были...
Код: Выделить всё
Declare Function CloseHandle Lib "kernel32" (ByVal Handle As Long) As Long
... ну так это и есть WinApi - использование встроенных функций из dll WindowsМурик писал(а):Для работы с COM портом, можно использовать DLL из архива, которую можно вызвать из любой среды программирования
Работать проще чем напрямую с WinAPI.ChipKiller писал(а): ну так это и есть WinApi - использование встроенных функций из dll Windows
во-первых, в паскале для этого вообще не надо особо мудрить:ChipKiller писал(а):... вот этого вполне хватит, чтобы читать/писать в СОМ-порт с помощью WinApi. На паскаль переписать недолго ИМХО
Код: Выделить всё
var ft : Text;
Assign(ft, 'COM1');
Reset(ft);
write(ft,'Hello, World!');
Close(ft);... возможно - все зависит от задачи. В любом случае все эти библиотеки есть не что иное, как надстройка над WinApi.Мурик писал(а):Работать проще чем напрямую с WinAPI
... а никто и не рассчитывает на "стремительную" работу Cом-порта (приведенный код из "живой" программы программатора - великолепно работает на 57,6Кбит/с ) для борьбы с зависаниями помогает cto - можно конечно работать с асинхронным выводом через отдельный поток .... а оно надо ??? ... тем более, что топикстартер об этом ничего не упоминал ....Мастер Ломастер писал(а):... ибо СОМ-порт очень медленное устройство, работа напрямую вот так, как показано мною или ChipKiller-ом, приведет к постоянному подвисанию программы в момент вывода в порт и тем более в момент чтения оттуда... а если вы решите прочесть строку, которая еще не пришла в порт - вы зависните наглухо секунд на 20 ...
Ага, под него.romanF1 писал(а):или под виртуальный ком порт