сейчас глянул в менеджере библиотек - библиотеки SysLibCom и SysLibCallback берутся с папки C:\Program Files\Common Files\CAA-Targets\3S\Lib_PLCWinNT, видимо пути сами изменились когда я менял целевую платформу, хотя я не знал об этом нюансе. Остальные овенвские, но как я понимаю до них дело-то даже не доходит, а библиотека ComService просто обертка вызовов библиотеки SysLibCom, впрочем если попробовать обходиться без нее - а напрямую вызывать функции из SysLibCom все равно не пашет
а почему порт именно второй, скрин покажите в диспетчере оборудования, какие СОМ-порты у Вас имеются на ПК
создал сейчас новый проект сразу под winnt с его syslibcom
с простейшим содержимым:
вроде заработало.....Код:IF port_opened=0 THEN Settings.Port:=3; Settings.dwBaudRate:=115200; Settings.byParity:=0; Settings.dwTimeout:=0; Settings.byStopBits:=0; Settings.dwBufferSize:=0; Settings.dwScan:=0; handle:=SysComOpen(Settings.Port); IF handle<>INVALID_HANDLE THEN res:=SysComSetSettings(handle,ADR(Settings)); END_IF ELSE res:=SysComClose(handle); END_IF
два дня на это убил...
означает ли это что я не могу юзать овеновскую modbus.lib с ВинНТ?
Напротив, можете.означает ли это что я не могу юзать овеновскую modbus.lib с ВинНТ?
Ну, вот я заставил PLCWinNT читать служебные данные с мегафоновского USB-свистка. Виртуальный COM16:Код:PROGRAM PLC_PRG VAR hPort: DWORD := 0; settings: COMSETTINGS; buf: STRING; END_VAR IF hPort = 0 THEN settings.byParity := 0; settings.byStopBits := 1; settings.dwBaudRate := 115200; settings.dwBufferSize := 0; settings.dwScan := 0; settings.dwTimeout := 0; settings.Port := 16; hPort := SysComOpen(16); IF hPort <> 0 THEN SysComSetSettings(hPort, ADR(settings)); END_IF ELSE SysComRead(hPort, ADR(buf), SIZEOF(buf) - 1, 0); END_IF