232个modbus协议对于此位485,必须注意:
1 .端口串行. c的基本配置函数
2 .中断中的配置函数
3 .最重要的一点,mbrtu.c中((这是重点) ) ) ) )。
(混合(ucharucslaveaddress,const UCHAR * pucFrame,USHORT usLength () ) ) ) ) ) 6550
{
emb错误代码estatus=MB _ en oerr;
USHORT usCRC16;
ENTER_CRITICAL_SECTION (;/* checkifthereceiverisstillinidlestate.ifnotwewhereto * slowwithprocessingthereceivedframeandthemastersentanother * frameonthenetwork.wehavetoabortsendingtheframe.*/if (ercvstate==state _ rx _ idle (/* firstbytebeforethemodbus us usus/* nowcopythemodbus-pduintothemodbus-serial-line-PDU.*/pucsndbuffercur [ MB _ ser _ PDU _ addr _ off ]=u u u u u u u u ucsll/* calculate CRC 16 checksumformodbus-serial-line-PDU.*/us CRC 16=usmbcrc 16 ((uchar * ) pucSndBufferCur,pucsndbufffffer ucrtubuf [ ussndbuffercount ]=(uchar ) usCRC16 8);/* activatethetransmitter.*/esnd state=state _ tx _ xmit; //485通信和2332通信的区别,必须追加。 否则通信失败.......... vmbportserialenable (假,真); //开始初次发送,使其能够进入发送完成中断xmbportserialputbyte () char ) *pucSndBufferCur。 pucSndBufferCur;/* nextbyteinsendbuffer.*/ussndbuffercount-- -; //485通信和2332通信的区别,必须追加。 否则通信失败.......... vmbportserialenable (假,真); }else{ eStatus=MB_EIO; }EXIT_CRITICAL_SECTION (; 返回状态; }