|
|
本帖最后由 ken0137 于 2015-1-16 09:06 编辑
现在使用软串口向电流表头以十六进制发送命令“AA 55 02 FE 01 00 ” ,并且需要能够得到十六进制的返回值并转发给PC端,这个十六进制的发送和接收应该如何写呢?求教大神
我自己写了一段
[mw_shl_code=c,true]#include <SoftwareSerial.h>
SoftwareSerial DLSerial(10, 4); // 电流表数据通讯TTL RX, TX
byte shuchu[6]={170,85,02,254,01,00};
//char shuchu[6]={0xAA,0x55,0x02,0xFE,0x01,0x00};
String comdata = "";
void setup() {
Serial.begin(115200);
DLSerial.begin(115200);
}
void loop() {
delay(2000);
Serial.println("Goodnight moon!");
// DLSerial.println("AA 55 02 FE 01 00");
DLSerial.write(&shuchu[0],6);
delay(1000);
while(DLSerial.available() > 0){
comdata+=char(DLSerial.read());
delay(2);
}
if(comdata.length() > 0) //如果comdata接收到卡号,则读出卡号
{
// Serial.println(comdata);
for(int i=0;i<comdata.length();i++){
Serial.print("comdata[");
Serial.print(i,DEC);
Serial.print("]=");
Serial.println(comdata,HEX);
}
}
comdata="";
}[/mw_shl_code]
发送是AA 55 02 FE 01 00 ,接收应该是AA 55 04 F6 DE 01 01 D9
但是返回不对,显示为
comdata[0]=FFFFFFAA
comdata[1]=55
comdata[2]=FFFFFF82
comdata[3]=FFFFFFFB
comdata[4]=FFFFFFD8
comdata[5]=FFFFFF81
comdata[6]=FFFFFFC0
comdata[7]=FFFFFFFD
如果接收这里使用Serial.println(comdata);
则返回的是乱码,例如
Goodnight moon!
誙傱�佊
Goodnight moon!
?鲮�
|
|