| @@ -3,6 +3,10 @@ | |||
| #include"modbus_parse.h" | |||
| /*在8N1下,一个字符=10位,波特率表示每秒传输的位数,换算成每us传输的位数要除以10^6 | |||
| *所以一个字符时间 = 10/(波特率/10^6)=10^7/波特率 | |||
| *(+ MODBUS_USART_BAUDRATE - 1UL)部分为整数运算向上取整 | |||
| */ | |||
| #if (MODBUS_USART_BAUDRATE > 19200U) | |||
| /*固定等待1750us,再减去IDLE中断等待的1个字符时间*/ | |||
| @@ -153,11 +153,11 @@ | |||
| <RecentlyUsedMenus>1</RecentlyUsedMenus> | |||
| <MenuShadows>1</MenuShadows> | |||
| <ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay> | |||
| <CommandsUsage>0E0300001D001B8F000001000000138600000B00000010860000F900000020810000010000000C810000020000000D800000020000000486000002000000568600002C0100000084000001000000148100000100000030840000010000000E810000010000005E8600000B0000001F8100000F0000008E8600000100000000E10000010000000B81000001000000058400000100000069860000010000001486000003000000198F00000100000005810000010000000284000002000000118600007A00000000860000020000001084000006000000468100003900000008860000020000005D86000005000000</CommandsUsage> | |||
| <CommandsUsage>160300001D00138600000B0000001B8F00000100000010860000FD00000020810000010000000D800000020000000C810000020000000486000002000000568600002C0100001481000001000000008400000100000030840000010000001F8100000F0000005E8600000B0000000E810000010000000B8100000100000000E10000010000008E860000010000001486000003000000698600000100000005840000010000000086000002000000118600007A00000002840000020000000581000001000000198F000001000000468100003D00000010840000060000005D860000050000000886000002000000</CommandsUsage> | |||
| </MFCToolBarParameters> | |||
| <CommandManager> | |||
| <CommandsWithoutImages>0400FFFFFFFF838600005886000004DC0000</CommandsWithoutImages> | |||
| <MenuUserImages>1C00578600001C000000028600001300000023920000000000000D860000190000000A8600002D000000078600002A00000004860000270000009A8600001A0000000186000012000000008400007A0000000C86000018000000098600002C0000001A860000340000008E8600003D0000000686000029000000698600003A0000000386000014000000558600000800000000860000110000000E8600001B0000000B8600002E000000088600002B000000A18600003E000000C38600000400000016860000330000003787000003000000C08600000E0000000586000028000000</MenuUserImages> | |||
| <MenuUserImages>1C000286000013000000578600001C0000000D8600001900000023920000000000000A8600002D000000078600002A000000048600002700000001860000120000009A8600001A000000008400007A0000000C860000180000001A86000034000000098600002C00000006860000290000008E8600003D0000000386000014000000698600003A000000008600001100000055860000080000000E8600001B0000000B8600002E000000C386000004000000A18600003E000000088600002B0000000586000028000000C08600000E00000037870000030000001686000033000000</MenuUserImages> | |||
| </CommandManager> | |||
| <Pane-59393> | |||
| <ID>0</ID> | |||
| @@ -1142,7 +1142,7 @@ | |||
| </BasePane-34050> | |||
| <MFCToolBar-34051> | |||
| <Name>Main</Name> | |||
| <Buttons>00200000010000002100FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000067000000FFFEFF000000000000000000000000000100000001000000018001E100000000000068000000FFFEFF000000000000000000000000000100000001000000018003E10000000000006A000000FFFEFF000000000000000000000000000100000001000000018000810000000000004B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000000006D000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004006F000000FFFEFF000000000000000000000000000100000001000000018022E10000000004006E000000FFFEFF000000000000000000000000000100000001000000018025E100000000000071000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040074000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040075000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004005E000000FFFEFF000000000000000000000000000100000001000000018024E100000000000070000000FFFEFF000000000000000000000000000100000001000000018028E100000000040072000000FFFEFF000000000000000000000000000100000001000000018029E100000000000073000000FFFEFF000000000000000000000000000100000001000000018002810000000000004D000000FFFEFF0000000000000000000000000001000000010000000180298100000000000062000000FFFEFF0000000000000000000000000001000000010000000180278100000000000060000000FFFEFF0000000000000000000000000001000000010000000180288100000000000061000000FFFEFF00000000000000000000000000010000000100000001801D810000000000005A000000FFFEFF00000000000000000000000000010000000100000001801E810000000004005B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000000051000000FFFEFF00000000000000000000000000010000000100000001800C8100000000000052000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000066000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001801F810000000000005C000000FFFEFF000000000000000000000000000100000001000000018020810000000000005D000000FFFEFF0000000000000000000000000001000000010000000180468100000000020064000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00FF020000</Buttons> | |||
| <Buttons>00200000010000002100FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000067000000FFFEFF000000000000000000000000000100000001000000018001E100000000000068000000FFFEFF000000000000000000000000000100000001000000018003E10000000000006A000000FFFEFF000000000000000000000000000100000001000000018000810000000000004B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000000006D000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004006F000000FFFEFF000000000000000000000000000100000001000000018022E10000000004006E000000FFFEFF000000000000000000000000000100000001000000018025E100000000000071000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040074000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040075000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0000000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004005E000000FFFEFF000000000000000000000000000100000001000000018024E100000000000070000000FFFEFF000000000000000000000000000100000001000000018028E100000000040072000000FFFEFF000000000000000000000000000100000001000000018029E100000000000073000000FFFEFF000000000000000000000000000100000001000000018002810000000000004D000000FFFEFF0000000000000000000000000001000000010000000180298100000000000062000000FFFEFF0000000000000000000000000001000000010000000180278100000000000060000000FFFEFF0000000000000000000000000001000000010000000180288100000000000061000000FFFEFF00000000000000000000000000010000000100000001801D810000000004005A000000FFFEFF00000000000000000000000000010000000100000001801E810000000004005B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000000051000000FFFEFF00000000000000000000000000010000000100000001800C8100000000000052000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000066000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001801F810000000000005C000000FFFEFF000000000000000000000000000100000001000000018020810000000000005D000000FFFEFF0000000000000000000000000001000000010000000180468100000000020064000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00FF020000</Buttons> | |||
| </MFCToolBar-34051> | |||
| <Pane-34051> | |||
| <ID>34051</ID> | |||
| @@ -24,7 +24,7 @@ | |||
| <stlinkResetStrategy>0</stlinkResetStrategy> | |||
| </StLinkDriver> | |||
| <DebugChecksum> | |||
| <Checksum>3570680553</Checksum> | |||
| <Checksum>3084689596</Checksum> | |||
| </DebugChecksum> | |||
| <Exceptions> | |||
| <StopOnUncaught>_ 0</StopOnUncaught> | |||
| @@ -124,8 +124,7 @@ | |||
| <mode>0</mode> | |||
| </DisassembleMode> | |||
| <Breakpoints2> | |||
| <Bp0>_ 1 "EMUL_CODE" "{d:\IAR_Project\TrainCamp_fubowen_Modbus\modbus\modbus_parse.c}.67.13" 0 0 1 "" 0 "" 0</Bp0> | |||
| <Count>1</Count> | |||
| <Count>0</Count> | |||
| </Breakpoints2> | |||
| <TermIOLog> | |||
| <LoggingEnabled>_ 0</LoggingEnabled> | |||
| @@ -83,14 +83,28 @@ void AppTaskModbusParse (void *p_arg) | |||
| case 0x0F:/*写多个线圈*/ | |||
| frame.wNum = rxBuf[6]; | |||
| memcpy(frame.wData, &rxBuf[7], frame.wNum); | |||
| ModbusErr = ModbusWriteCoils(frame.opeAddres, frame.opeNum, frame.wData); | |||
| if(frame.wNum != ((frame.opeNum + 7) / 8)) | |||
| { | |||
| ModbusErr = ModbusErrReply(0x0F, ERR_DATA); | |||
| } | |||
| else | |||
| { | |||
| memcpy(frame.wData, &rxBuf[7], frame.wNum); | |||
| ModbusErr = ModbusWriteCoils(frame.opeAddres, frame.opeNum, frame.wData); | |||
| } | |||
| break; | |||
| case 0x10:/*写多个寄存器*/ | |||
| frame.wNum = rxBuf[6]; | |||
| memcpy(frame.wData, &rxBuf[7], frame.wNum); | |||
| ModbusErr = ModbusWriteRegs(frame.opeAddres, frame.opeNum, frame.wData); | |||
| if(frame.wNum != (frame.opeNum * 2)) | |||
| { | |||
| ModbusErr = ModbusErrReply(0x10, ERR_DATA); | |||
| } | |||
| else | |||
| { | |||
| memcpy(frame.wData, &rxBuf[7], frame.wNum); | |||
| ModbusErr = ModbusWriteRegs(frame.opeAddres, frame.opeNum, frame.wData); | |||
| } | |||
| break; | |||
| case 0x05:/*写单个线圈*/ | |||