Соединения последовательного порта DM 2.3x - PullRequest
0 голосов
/ 05 февраля 2019

Я хотел бы получить изображение, отправить команду на последовательный порт, взять другое изображение, отправить новую команду и т. Д. (Используя GMS 2.3x).

Кажется, что LaunchExternalProcess() будет неудобно использовать (вам нужно иметь уникальное выражение командной строки для каждой команды на последовательный порт, верно?).

Я бы предположил, что SerialControl.dll будет проще в использовании, но я не знаю, где его взять.Будет ли использование команд в SerialControl.dll более эффективным, чем использование LaunchExternalProcess()?Время получения изображения велико, поэтому скорость передачи данных не является основным фактором.

1 Ответ

0 голосов
/ 06 февраля 2019

К сожалению, я не знаю, в каких конфигурациях GMS SerialConrol.dll устанавливается - это точно только в онлайн-установках - но если у вас есть DLL, то использование команд в ней, кажется, лучший способ пойтио последовательном порте связи.В частности, если вы хотите, чтобы это была двусторонняя связь, где сценарий также должен получать что-то через это соединение.Однако, если в вашей установке нет библиотеки DLL, я настоятельно рекомендую не копировать ее из другой установки, в которой она есть, поскольку совместимость между версиями не гарантируется, и несоответствие может действительно привести вас в замешательство.

У меня естьдо сих пор никогда не пробовал LaunchExternalProcess для последовательной связи.Если вы дадите ему тест, и он будет достаточно быстрым, я тоже не вижу в этом никаких проблем.Это, безусловно, дает вам больше гибкости, и я не буду слишком обеспокоен тем, что это будет "громоздким".В конце концов, кто-то всегда должен где-то поместить код.В зависимости от того, что вам нужно, вы можете аккуратно обернуть один или два сценария-метода вокруг команд, и с этого момента это будет просто «простой вызов», который также будет использоваться.Создание двусторонней связи с «LaunchExternaProcess» сложнее, но требует от него некоторого творческого подхода и промежуточного хранения файлов в папке.


Следует отметить, что в настоящее время официальной документации нет.на команды сценария в SerialControl.DLL и на то, что они не поддерживаются Gatan, что обычно означает: Вы можете использовать их, если они работают, но вы не можете жаловаться или запрашивать помощь, если они этого не делают или не получаютудалены в более поздних версиях.

Команды в SerialControl.dll для интерфейсов RS232C:

            Number SPOpen( Number port, Number baud, Number stop, Number parity, Number data )
            Number SPOpen( String prefix )
            void SPClose( Number serialPortL )
            Number SPSendString( Number serialPortL, String string )
            Number SPSendHex( Number serialPortL, String string )
            void SPFlushInput( Number serialPortL )
            Number SPGetPendingBytes( Number serialPortL )
            Number SPGetTime(  )
            String SPReceiveString( Number serialPortL, Number maxLength, NumberVariable actual )
            String SPReceiveHexString( Number serialPortL, Number maxLength, NumberVariable actual )
            void SPSetRTS( Number serialPortL, Boolean on )
            void SPSetDTR( Number serialPortL, Boolean on )

Любой последовательный порт, открытый командами, также должен быть закрыт сценарием,или он останется открытым (и, следовательно, заблокированным).

...