gpt4 book ai didi

delphi - 发送 ASCII 而不是字符串

转载 作者:行者123 更新时间:2023-12-01 21:27:08 30 4
gpt4 key购买 nike

我正在尝试将数据发送到 com 端口,但我正在交谈的设备只接受 ASCII 或 HEX,而我发送的是字符串。我如何更改它以发送 ASCII 或十六进制?

hCommFile: THandle;

关于创建..

 hCommFile := CreateFile(PChar('COM1'),
GENERIC_READ,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);

发送数据

{****************************************************************************}
procedure TForm4.WriteString(sToSend:string);
//While in THIS program, we only write stings,
// this procedure is perfectly capable of sending a
// "string" consisting of a single character.
var NumberWritten : dWord;
//The type of NumberWritten is problematic... some
//posts online say use dWord, others say use longint.
//Perhaps it is a matter of what version of Windows
// and/or Delphi you have? For XP + Delphi 4, dWord is right.
begin
if WriteFile(hCommFile,
PChar(sToSend)^,
Length(sToSend),
NumberWritten,
nil)=false then
showmessage('Unable to send');
end;//WriteString

最佳答案

改变

procedure TForm4.WriteString(sToSend:string);

procedure TForm4.WriteString(const sToSend:ansistring);

PChar(sToSend)^,

PAnsiChar(sToSend)^,

应该可以...

您的问题是 XE2 对字符串使用 UniCode(每个字符 2 个字节),因此您需要将要发送的字符串转换为每个字符 1 个字节的格式。最简单的方法是将参数声明为 AnsiString(旧的 STRING 类型),然后让编译器在幕后为您完成所有的操作。

关于delphi - 发送 ASCII 而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23986977/

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