温湿度数据采集-串口通信-Delphi7,有没有源代码?

解决方案 »

  1.   

    以前搞过51单片机+DS18B20一线测温,MAX485传输到上位机应该也不难。温度范围要多大,精度要多高?
      

  2.   

    湿度也有价格低廉的模块可用。关键是要知道你的需求:使用环境、温度范围、精度,这样才能知道该用什么传感器。不同的传感器,采集程序自然就不一样了。单片机与上位机的通信部分,一般是一样的:MAX485+双绞线+上位机串行口。Q 382943850
      

  3.   

    也是用串口,比如串口发送来01,delphi中显示温度多少,湿度多少,可以吗?
      

  4.   

    使用SPCOMM控件,网上搜索自己下载,
      Comm1.CommName:=Trim(Comprot.Text);   //串口号
     Comm1.BaudRate:=strtoint(Trim(Comrate.text));//波特率
      Comm1.Parity:=None;//
    发送端:var
    buff:array[1..8] of byte;
     begin
      Comm1.StartComm;
     sleep(100);
      buff[1]:=$00;
      buff[2]:=$00;
      buff[3]:=$00;
      buff[4]:=$00;
      buff[5]:=$00;
      buff[6]:=$00;
      CRC16(@buff,6);
      buff[7]:=crc1;
      buff[8]:=crc2; if not comm1.writecommdata(@buff,8) then
     begin
    ...
    end
    ...
    end
    接收端:procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
    var
      i:integer;
      viewstring:string;
      buff: array[0..19] of Byte;
      
    begin
      Sleep(100);
      viewstring:='';
      CopyMemory(@buff,buffer,BufferLength);
      memo1.lines.add('温度:'+floattostr(((Buff[3] * 256)+(Buff[4] mod 256))*0.1)+'湿度:'+floattostr(((Buff[5] * 256)+(Buff[6] mod 256)) * 0.1)+'状态:'+inttohex(Buff[7],2));  for i:=8 to 19 do
      begin
        viewstring:=viewstring+inttohex(Buff[i],2)+' ';
      end;
    ;
      Comm1.StopComm;
    end;
      

  5.   

    这要看你使用的温湿度是什么协议,一般都是modbus协议