资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

各位看看!急啊!!!

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

我现在用mscomm控件写串口通讯程序,mscomm的setting为9600,n,8,1。  
   
  以byte数组发送,代码为  
                    mscomm1.output:=buffer1;         //buffer1是一个已经赋好值的array   of   byte  
  如上写发送没有问题,单片机也能正确接受到16进制数据。  
   
  以byte数组接收,代码为  
                    buffer2:=mscomm1.input;         //buffer2是定义好的array   of   byte  
  如上写接收的时候会出现Invalid   argument错误,我看书上这样都是这样写的,为什么我会错呢???  
  若写为   str:=mscomm1.input;   //str是一个string   ,就不会出错了。但是这样我收到的不是发送的16进制数据,而是16进制已经转成字符的一个字符串。即正确接收应该是3031的,就是接收01。  
   
  上面的问题应该怎么解决啊?正确的应该如何写?各位帮帮忙,急啊!!!

网友回答:

发表者:suuare

var   vTmp:   Variant;  
          ovtmp:   oleVariant;  
          i,   iReceived:   Integer;  
          buffer2:   array[0..127]   of   byte;  
  begin  
                          fMSComm.InputMode   :=   comInPutModeBinary;  
                          Sleep(20);  
                          iReceived   :=   fMSComm.InBufferCount;  
                          ovtmp   :=   fMSComm.Input;  
                          vTmp   :=   VarArrayCreate([0,127],varByte);  
                          vTmp   :=   ovtmp;  
                          for   i   :=   0   to   iReceived   -   1   do  
                              begin  
                                  bTmp   :=   vTmp[i];  
                                  buffer2   :=   bTmp;    
                              end;  
  end;


 

 
热门推荐笔记本: 戴尔笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved