Я создаю простую программу на Delphi для отправки символа через COM-порт с использованием 2 параметров, первый параметр - это номер порта, а второй параметр - это символ для отправки. Поэтому, если я сохраню его как p.exe, «p.exe 20 A» отправит «A» через COM20.
try
PhoneNumber := ParamStr(2);
if(StrToInt(ParamStr(1))>=10)then
CommPort := '\\.\COM'+ParamStr(1)
else
CommPort := 'COM'+ParamStr(1);
hCommFile := CreateFile(PChar(CommPort),
GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if hCommFile=INVALID_HANDLE_VALUE then begin
ShowMessage('Unable to open '+ CommPort);
end;
if WriteFile(hCommFile, PChar(PhoneNumber)^, Length(PhoneNumber),NumberWritten, nil)=false then
showmessage('Unable to send');
PurgeComm(hCommFile,PURGE_TXCLEAR);
FlushFileBuffers(hCommFile);
CloseHandle(hCommFile);
Application.Terminate;
except
PurgeComm(hCommFile,PURGE_TXCLEAR);
FlushFileBuffers(hCommFile);
Application.Terminate;
end;
И я также использую гипертерминал с тем же номером COM, скорость передачи данных = 9600, flow_control = none, и это дает тот же результат. Персонаж отправил хорошо.
Проблема в том, что я не могу запустить свою программу (p.exe) перед тем, как выполнить следующие шаги при каждом входе в Windows XP:
Подключите через гипертерминал к назначенному COM,
отключи это.
тогда мой исполняемый файл может быть запущен. В противном случае, так же, как вы запускаете два сеанса гипертерминала в одном и том же COM, это не сработает. Кто-нибудь получил подсказку об этом? Я что-то пропустил в своем коде?