我做了一个上位机接收下位机传送数据的程序,下位机是以16进制的方式从串口发出数据,我用的MSCOMM控件来接收,但接收出来的信息是乱码,接收模式随便设成哪种都不行,是不是数据转换上的问题呀,请大侠们指点!最好有详细点!若行马上给分!

解决方案 »

  1.   

    用SPCOMM吧。
    发布方便。有源码。
      

  2.   

    对,我也觉得用SPCOMM好,而且是多线程的,听说MSCOMM不是多线程的。
      

  3.   

    在Delphi/BCB下写RS232的。最好用SPCOMM。有SOURCE CODE。  对于DEBUG。我建议国人用MyScope这只程式,但只能在WIN98下DEBUG。在2000/xp下有另一个软件。我不记得是什么名字了。烦请Google.
      

  4.   

    用MSCOMM收发十六进制,要用动态数值型数组就可以了
    收:var
    temp: array of byte;
    len: integer;
    i:Integer;
    output:string;
    begin
    len := mscomm1.buffersizw;
    setlength(temp,len);
    temp := mscomm1.input;
    output:='';
    for i:=1 to len do
    output:=output+IntToHex(temp[i-1],2);//output就是结果啦!如果是发送的话
    先将你要发送的十六进制数赋值到ARRAY OF BYTE这个动态数组
    然后发送 mscomm1.output := temp 
    这样就可以了给分!!!!
      

  5.   

    忘了说,要把INPUTMODE改为二进制模式
    mscomm1.inputmode := 1;
      

  6.   

    用MScomm,先定义一个oleVaraint,它其实就是一个数组,所以把它直接赋给一个数组变量,然后再存取:
      procedure readcomm;
         var Vdata:Olevariant;
             buf:Array of byte;
             i:integer;
      begin
        vdata := comm1.input;
        buf := vdata;
        for i := low(buf) to high(buf) do
        begin
         
        end;
      end;  还不会就给个方式,看接给你发点代码吧!