YY L
/
RS36_Multitemp_get_crc
RS36
Revision 0:5da6d25de6c5, committed 2022-03-17
- Comitter:
- YYL5213
- Date:
- Thu Mar 17 12:06:42 2022 +0000
- Commit message:
- RS36
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Mar 17 12:06:42 2022 +0000 @@ -0,0 +1,81 @@ +#include "mbed.h" +Serial pc(SERIAL_TX, SERIAL_RX); +Serial modbus(PC_10, PC_11); +uint8_t get[13]; +float tem[29]; + +uint16_t CRC16(uint8_t *bpMsgStartAddress, uint8_t bDataLen) +{ + uint16_t crc = 0xffff; + uint8_t u8tmp; + for (int i=0; i<bDataLen; i++) { + crc ^= *bpMsgStartAddress++; + for (int n=0; n<8; n++) { + u8tmp = crc & 1; + crc >>= 1; + crc &= 0x7fff; + if (u8tmp == 1) { + crc ^= 0xa001; + } + } + } + return crc; +} + +void get_data(int len) +{ + int i=0; + while(i<len) { + if(modbus.readable() ) { + get[i]=modbus.getc(); + i=i+1; + } + } +} + +void put_data(int address,int len) +{ + uint8_t put[8]; // 读取4路温度 + put[0]=address; + put[1]=0x03; + put[2]=0x00; + put[3]=0x28; + put[4]=0x00; + put[5]=0x04; + uint16_t crc=CRC16(put,6); + //pc.printf("crc:%x,%x,%x",crc,crc&0xFF,(crc&0xFF00)>>8); + put[6]=crc&0xFF; + put[7]=(crc&0xFF00)>>8; + for(int i=0; i<len; i++) + modbus.putc(put[i]); +} + +void read_tem() +{ + for(int i=0; i<7; i++) { + put_data(i+1,8); + get_data(13); + tem[1+4*i]=(get[3]*256.0+get[4])/10.0f;//一通道 + tem[2+4*i]=(get[5]*256.0+get[6])/10.0f;//二通道 + tem[3+4*i]=(get[7]*256.0+get[8])/10.0f;//三通道 + tem[4+4*i]=(get[9]*256.0+get[10])/10.0f;//四通道 + wait_ms(5); + } +} + +int main() +{ + pc.baud(115200); + modbus.baud(9600); + pc.printf("PC connected!\n"); + while(1) { + read_tem(); + pc.printf("d0:"); + for(int i=1; i<28; i++) { + pc.printf("%.1f,",tem[i]); + } + pc.printf("%.1f",tem[28]); + pc.printf("\n"); + wait(0.1); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Mar 17 12:06:42 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file