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知道最好。

解决方案 »

  1.   

     procedure   senddata5;  var  i:integer;  commflg:boolean;  begin  viewstring:='';  commflg:=true;  for   i:=1   to  4   do  begin  if   not  Form1.com1.writecommdata(@sbuf[i],1)   then  begin  commflg:=false;  break;  end;
          
      //发送时字节间的延时  sleep(2);  viewstring:=viewstring+'   '+inttohex(sbuf[i],2)+'';
      end;  viewstring:=viewstring;Form1.RichEdit2.lines.add(viewstring);Form1.RichEdit1.lines.add('');  if   not   commflg   then   messagedlg('设备尚未就绪,请您检查设备是否连接或者串口是否打开!'   ,mterror,[mbyes],0);  end;
      

  2.   

    你要清楚,你传递的事23数字,还是字符‘23’,你现在传递的是字符串 
     我也发现这个问题,可是我不知道如何在能读取edit里消息的时候,再发现数字23.能说详细点吗?谢谢
      

  3.   

    你的这句有点问题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;直接发送字符串是不会有反应的。