协议传输数据按单字节对齐
This commit is contained in:
parent
032d541cf5
commit
adbd7818d0
|
@ -230,6 +230,26 @@
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>hart1_uart5</ItemText>
|
<ItemText>hart1_uart5</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>16</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>user_communication_di</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>17</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>current_buff</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>18</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>user_communication_ao</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>19</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>communication_data</ItemText>
|
||||||
|
</Ww>
|
||||||
</WatchWindow1>
|
</WatchWindow1>
|
||||||
<MemoryWindow1>
|
<MemoryWindow1>
|
||||||
<Mm>
|
<Mm>
|
||||||
|
|
|
@ -16,7 +16,7 @@ typedef enum
|
||||||
COMMAND_ERROR,
|
COMMAND_ERROR,
|
||||||
DEVICE_ERROR,
|
DEVICE_ERROR,
|
||||||
} communication_error_e;
|
} communication_error_e;
|
||||||
|
#pragma pack(1)
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint8_t start_addr;
|
uint8_t start_addr;
|
||||||
|
@ -49,6 +49,7 @@ typedef union
|
||||||
communication_ao_t ao_data;
|
communication_ao_t ao_data;
|
||||||
communication_ai_t ai_data;
|
communication_ai_t ai_data;
|
||||||
} communication_data_u;
|
} communication_data_u;
|
||||||
|
#pragma pack()
|
||||||
|
|
||||||
void communication_exception(uint8_t *tx_data, const uint8_t *const rx_data, communication_error_e error_code);
|
void communication_exception(uint8_t *tx_data, const uint8_t *const rx_data, communication_error_e error_code);
|
||||||
void communication_get_ai(communication_ai_t *ai_data, uint8_t *tx_data, const uint8_t *const rx_data);
|
void communication_get_ai(communication_ai_t *ai_data, uint8_t *tx_data, const uint8_t *const rx_data);
|
||||||
|
|
|
@ -176,8 +176,9 @@ static err_t tcpecho_recv_control(void *arg, struct tcp_pcb *tpcb, struct pbuf *
|
||||||
else if (tcp_rx_data[3] == 0x02) // 读数字量指令
|
else if (tcp_rx_data[3] == 0x02) // 读数字量指令
|
||||||
{
|
{
|
||||||
/*读操作,从寄存器读取数据,组包返回*/
|
/*读操作,从寄存器读取数据,组包返回*/
|
||||||
tx_data_len = 7 + user_communication_di->num;
|
|
||||||
user_communication_di = &communication_data.di_data;
|
user_communication_di = &communication_data.di_data;
|
||||||
|
tx_data_len = 7 + user_communication_di->num;
|
||||||
user_read_gpio(user_communication_di, tcp_tx_data, tcp_rx_data);
|
user_read_gpio(user_communication_di, tcp_tx_data, tcp_rx_data);
|
||||||
tcp_write(tpcb, tcp_tx_data, tx_data_len, 1);
|
tcp_write(tpcb, tcp_tx_data, tx_data_len, 1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue