初级会员

- 积分
- 178
- 金钱
- 178
- 注册时间
- 2013-11-19
- 在线时间
- 22 小时
|
5金钱
现在又这么一个情况。。。
自己用C#编写了一个简单的上位机,接收单片机发送char(8位)的数据。
现在我要用单片机发送int 型的 0X1122,0X3344,0X5566。。
把他们分别拆成0x11,0x22,0x33,0x44,0x55,0x66,这六个字节发送。。。
但现在的问题是,上位机开始接收的数据,可能并不是从0x11开始的。这样我接收完6个字节,再重新组合,就不是我要组合的0x1122,0x3344,0x5566
(比如第一个接收的是0x44,,依次类推,最后拼接的结果就是 0x4455,0x6611,0x2233)
附程序:
单片机:// 先发低位,再发高位
USART_SendData(USART1,L_Value1);
while((USART1->SR&0X40)==0);//等待发送结束
USART_SendData(USART1,H_Value1);
while((USART1->SR&0X40)==0);//等待发送结束
USART_SendData(USART1,L_Value2);
while((USART1->SR&0X40)==0);//等待发送结束
USART_SendData(USART1,H_Value2);
while((USART1->SR&0X40)==0);//等待发送结束
USART_SendData(USART1,L_DS);
while((USART1->SR&0X40)==0);//等待发送结束
USART_SendData(USART1,H_DS);
while((USART1->SR&0X40)==0);//等待发送结束
USART_SendData(USART1,L_Voltage1);
while((USART1->SR&0X40)==0);//等待发送结束
USART_SendData(USART1,H_Voltage1);
while((USART1->SR&0X40)==0);//等待发送结束
上位机(电脑):
private void PortDataReceivedEvent(object sender, SerialDataReceivedEventArgs args) //串口数据接收
{
// byte[] data = new byte[serialPort1.BytesToRead];
serialPort1.Read(My_AD, cnt, 1);//读
cnt++;
if (My_AD[0] != 0x01)
{
cnt = 0;
}
string ad0 = cnt.ToString("x");
textBox8.Text = ad0;
要增加怎么样机制,才能使上位机 从我希望是第一个接收的字符开始。。。。以前听过什么头码,但自己不太会。。求指点。。。
|
|