51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> 其它 >> 文章正文

Delphi运用SPCOMM控件数据传输错误

更新时间:2012-4-1:  来源:51代码网

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

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 赞助商链接
    推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |