не совсем верно, ФБ должны работать везде, а вот бибка SysLibCom и др. должны браться не с диска к плк, а из папки специально предназначенной для ВинНТ
сейчас глянул в менеджере библиотек - библиотеки 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