Появилась еще одна проблема. Написал небольшой кусок кода. Компилирую его - 0 ошибок, 0 сообщений. Пытаюсь сделать логин к контроллеру - долго-долго (1-2 мин.) думает, потом выдает "В экземпляре объекта не задана ссылка на объект".
Это что значит?
У меня CoDeSys Gateway SysTray(stopped) - и я ни как не могу его запустить. Видимо из-за этого мои глюки. То не логинится, то во время работы разрывается связь, то я не могу остановить работу контроллера и разорвать с ним соединение пока не убью CoDeSys как процесс.
Полный хаос.
Не подскажете какие порты используются для работы CoDeSys Gateway и как проверить - кем они заняты?
1) опущена структура ComSettingsEx при открытие порта, а в ней есть важный параметр byByteSize, который определяет биты данных (формат посылки)
2)Res - это результат выполнения операции (0- все прошло без ошибок, иначе код ошибки)
3) Функция SysComOpen2 возвращает ссылку на ком порт (Com Handle), именно то, что вам и нужно при последующей работе с портом, и нужно брать это значение.
Евгений Сергеевич! Вы написали "2)Res - это результат выполнения операции (0- все прошло без ошибок, иначе код ошибки)".
В инструкции указано, что значение 0xFFFFFFFF - вот это ошибка, а не 0.
pResult типа "POINTER TO RTS_IEC_RESULT" имеет описание "Error code, see Document „Runtime Error Codes“."(Код ошибки, смотрите документ "Коды ошибок во время выполнения программы")
И там в описание видим 0 - No error (нет ошибок)
то о чем вы говорите это видно вот это:
"The return value of type RTS_IEC_HANDLE gives a handle for the port. This handle can be passed to other library functions. If the port cannot be opened, 0xFFFFFFFF will be returned as handle."
(возвращаемое значение типа RTS_IEC_HANDLE выдает ссылку (Handle) на порт. Этот дескриптор может быть передан другим функциям библиотеки. Если порт не может быть открыт, 0xFFFFFFFF будет возвращено как ссылка.)
Если я ничего не путаю, то в ситуации, когда порт кем-то занят, и мы пытаемся его открыть еще раз, то ошибка открытия (Res) равна нулю, а Handle равен 0xFFFFFFFF. А вот если порт не исправен (сгорел например), то значение Res будет отлично от нуля, а вот что будет присвоено в Handle я затрудняюсь ответить так с ходу, это смотреть надо на приборе с мертвым портом.
Если порт исправен и никем не занят, то при открытие мы получим ссылку на порт (Handle) отличный как от 0 так и от 0xFFFFFFFF, и Res=0.
Причем Handle = SysComOpen2 (..., adr(Res));
Последний раз редактировалось Евгений Сергеевич; 28.02.2011 в 17:13.