procedure SendData1;
var
Str1Freq:String;
ViewStr:String;
CommFlag:Boolean;
begin
Str1Freq:=Form1.EditFreq.Text;
Viewstr:='';
CommFlag:=true;
if not Form1.Comm1.WriteCommData(Pchar(Str1Freq),2)then
begin
CommFlag:=false;
end;
ViewStr:='send frequency data'+Str1Freq;
Form1.Memo1.Lines.Add(ViewStr);
if not CommFlag then messagedlg('sending falied' ,mterror,[mbyes],0);
end;
为什么我在editfreq里输入的23,只会显示00?怎么才能传输23(10进制的23,不是无意思的23).谢谢。新手,能留下QQ知道最好。
回复:你的这句有点问题if not Form1.Comm1.WriteCommData(Pchar(Str1Freq),2)then
你的Str1Freq是字符串,我之前用串口发字符串总有一些问题,我解决方法是顶一个array of Char,将字符串写到这样一组字符组中,再发送。
procedure TForm3.Button4Click(Sender: TObject); //按下按钮发送字符串
var
ii,len:Integer;
sendbuf:array[1..30] of Char;
str:string;
begin
str:=Edit4.Text; //提取输入内容
len:=Length(Edit4.Text); //输入长度
for ii:=1 to len do
begin
sendbuf[ii]:=str[ii]; //字符串转化成array of char
end;
SpComm1.WriteCommData(@Sendbuf,len); //发送
end;
这段代码是我发送在edit4中所输入的内容,要是不转化成array of Char;直接发送字符串是不会有反应的。