К сожалению, я не знаю, в каких конфигурациях 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 )
Любой последовательный порт, открытый командами, также должен быть закрыт сценарием,или он останется открытым (и, следовательно, заблокированным).