gpt4 book ai didi

delphi - 串口在delphi中不起作用

转载 作者:行者123 更新时间:2023-12-03 15:47:06 25 4
gpt4 key购买 nike

我正在Delphi中创建一个简单的程序,使用2个参数通过COM端口发送字符,第一个参数是端口号,第二个参数是要发送的字符。因此,如果我将其保存为 p.exe,“p.exe 20 A”将通过 COM20 发送“A”。

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 的 super 终端,它给出了相同的结果。角色发送得很好。问题是,在每次登录 Windows XP 时执行以下步骤之前,我无法运行我的程序 (p.exe): 通过 super 终端连接到指定的COM, 断开它。然后我的可执行文件可以运行。否则,就像您在同一个 COM 中运行两个 super 终端 session 一样,它将无法工作。有人对此有任何提示吗?我的代码中遗漏了什么吗?

最佳答案

我在您的代码中没有看到任何设置内容。因此,也许您正在依赖运行 super 终端的副作用来为您“启动”端口。看看这篇文章,他们会介绍这些内容:波特率、奇偶校验等。

http://www.delphi-central.com/serial.aspx

这似乎是一个完整的工作示例。看看您是否可以使其正常工作,并用作构建的基础。

关于delphi - 串口在delphi中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7967638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com