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编号的超级终端baudrate = 9600,flow_control = none并且它给出相同的结果.这个角色送得很好.
问题是,每次登录到我的Windows XP之前,我都无法运行我的程序(p.exe)之前执行以下步骤:
通过超级终端连接到指定的COM,
断开它.
然后我的可执行文件可以运行.否则,就像你在同一个COM中运行两个超级终端会话一样,它将无法工作.有人提示这个吗?我在代码中遗漏了什么吗?
http://www.delphi-central.com/serial.aspx
这似乎是一个完整的例子.看看你是否可以使用它,并用作构建的基础.