Microchip
直播中

何壮梦

8年用户 292经验值
私信 关注
[问答]

怎么从dsPIC33E向PC发送4个数字

亲爱的,我想把4个数字(每个14位)从DSPIC发送到UART上的PC。所以我试着把每个数字分成2个部分(每8个比特),然后用UART发送如下。得到一些随机输出。请帮忙?我的发送逻辑只包含在代码中。我应该接收“4242 1024 1234 3015”(十进制)或“1092 0400 04D2 0BC7”(HEX)。对的。。。。。。。。。。。?

以上来自于百度翻译


      以下为原文

    Dear all,
I want to send 4 numbers(each 14 bit) from dsPIC to PC over UART. So i tried to divide each number to 2 parts(each 8 bits) and send by UART as follows. Getting some random outputs. Please help?
My sending logic only included in code.
void Send_EnCoderInfo(unsigned int count1,unsigned int count2,unsigned int count3,unsigned int count4)
{
unsigned char cnt;
unsigned char send_buffer[12] = {0x00};
send_buffer[0] = count1>>8;
send_buffer[1] = count1 & 0xff;
send_buffer[2] = ' ';
send_buffer[3] = count2>>8;
send_buffer[4] = count2 & 0xff;
send_buffer[5] = ' ';
send_buffer[6] = count3>>8;
send_buffer[7] = count3 & 0xff;
send_buffer[8] = ' ';
send_buffer[9] = count4>>8;
send_buffer[10] = count4 & 0xff;
send_buffer[11] = ' ';
for(cnt = 0; cnt < 12; cnt++)
{
U2TXREG = (send_buffer[cnt]);
}
// U2TXREG =' '; //send space after each count value
U2TXREG = 0x0A; //keyboard enter after each count value
// U2TXREG = 0x0D; //keyboard enter after each count value
}

int main()
{
unsigned int encoder_count1=4242;
unsigned int encoder_count2=1024;
unsigned int encoder_count3=1234;
unsigned int encoder_count4=3025;
while(1)
{
Send_EnCoderInfo(encoder_count1,encoder_count2,encoder_count3,encoder_count4);
}
}
I should receive "4242 1024 1234 3015"(decimal) or"1092 0400 04D2 0BC7"(Hex). correct...........?

回帖(15)

杨晓健

2019-3-19 10:10:06
谢谢您。在我的终端窗口中,我有选择来检查ASCII或二进制或十六进制的十六进制。但是所有的数字都被混淆了,并且有一些错误。你能建议一些无差错的机制来发送这4个数字吗?

以上来自于百度翻译


      以下为原文

    Thank you. In my terminal window i have option to check in ASCII or BINARY or HEX of DECIMAL. But all numbers are getting mixed up and there are some errors. Can you suggest some error free mechanism to send these 4 numbers?
举报

王焕树

2019-3-19 10:17:02
使用Strutff()将数字格式化成十六进制格式的字符串,然后发送该字符串。

以上来自于百度翻译


      以下为原文

    Use sprintf() to format the numbers into a string in hex format, then send that string.
 
举报

陈晨

2019-3-19 10:34:23
你还没有说你希望他们怎样到达。ASCII十进制ASCII十六进制。现在你用原始二进制文件发送它们。那么二进制十六进制?

以上来自于百度翻译


      以下为原文

    You still have not said how you would like them to arrive.
Ascii decimal
Ascii hex.
Right now you are sending them in raw binary.
So Binary hex?
举报

杨晓健

2019-3-19 10:52:07
我想以十六进制的形式到达数据。请让我知道如何用代码写。

以上来自于百度翻译


      以下为原文

    I would like to arrive the data in HEX. Please let me know how to write in code.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分