u8 RS232Buf[250];
u8 CanBuf_STATUS[250]; //机器状态 0=停机,1=运转,2=预约
u8 CanBuf_TEMP_PV[250]; //温度实际值(-70 to 150)
u8 CanBuf_HUMI_PV[250]; //湿度实际值(0 to 99.9)
u8 CanBuf_TEMP_SV[250]; //温度目标值(-70 to 150)
u8 CanBuf_HUMI_SV[250]; //湿度目标值(0 to 99.9)
u8 CanBuf_ERROR[250];
RS232Buf[]=“STX,8,0,A,6,0,26.24,0.0,0.00,0.0,rckson.pgm,0,0,0,37,0,END”
sscanf(RS232Buf, "%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%[^,],%[^,]", CanBuf_STATUS,CanBuf_TEMP_PV);
sscanf(RS232Buf, "%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%[^,],%[^,]", CanBuf_HUMI_PV,CanBuf_TEMP_SV);
sscanf(RS232Buf, "%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%[^,]", CanBuf_HUMI_SV,CanBuf_ERROR);
单单用任何一个,都没问题,连续用程序就死了
还有个问题就是,如下用法就不行,程序也是直接跑死,只能一次赋值两个字符数组
sscanf(RS232Buf, "%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%[^,],%*[^,]", CanBuf_STATUS,CanBuf_TEMP_PV,CanBuf_HUMI_PV,CanBuf_TEMP_SV,CanBuf_HUMI_SV,CanBuf_ERROR);
|