Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将rs232消息保存到变量_C++_Serial Port_Arduino_Uart - Fatal编程技术网

C++ 将rs232消息保存到变量

C++ 将rs232消息保存到变量,c++,serial-port,arduino,uart,C++,Serial Port,Arduino,Uart,如果我通过RS232接收到一条包含2字节长度的消息,例如0000 0001 0001 1100(即100011100,右侧的lsb),我想将其保存到一个名为value的变量中 我使用以下步骤“解码”字节流: rxByte=Serial1.read() messageContent[0]=rxByte messageContent[1]=rxByte 第一个rxByte的值为0000 0001,第二个为0001 1100。 或者这些值是否已经在内部转换为十六进制或十二进制 现在,我看到了以这种方式

如果我通过RS232接收到一条包含2字节长度的消息,例如0000 0001 0001 1100(即100011100,右侧的lsb),我想将其保存到一个名为value的变量中

我使用以下步骤“解码”字节流:

rxByte=Serial1.read()

messageContent[0]=rxByte

messageContent[1]=rxByte

第一个rxByte的值为0000 0001,第二个为0001 1100。 或者这些值是否已经在内部转换为十六进制或十二进制

现在,我看到了以这种方式将其保存为值的代码:

uint32\u t value=messageContent[0]*256+messageContent[0]


这是如何工作的?

messageContent[0]*256
本质上是一个位移位:代码与

解码程序:

//char messageContent[2]; //Always keep in mind datatypes in use!!!
messageContent[0] = Serial1.read()
messageContent[1] = Serial1.read()
你们所做的就是在两个位置上放置相同的值

如果要将两个字节读入16位或更大的整数:

short int messageContent = Serial1.read()<<8+Serial.read();

short int-messageContent=Serial1.read()“你把你的号码设为45*1000+123=45123”我理解为什么,但不理解如何。。。所以计算机总是知道“*256”是十进制的?它也可以是十六进制,然后位移位将不起作用。首先,rxbyte=Serial1.read()当然是在每次迭代中生成的,它只是为了显示我是如何执行的。C编译器规则将(在源C代码中)编写的内容定义为十进制(255)、十六进制(0xff)或八进制(0377)。
 uint32_t value = *((uint16_t*)(messageContext));
//char messageContent[2]; //Always keep in mind datatypes in use!!!
messageContent[0] = Serial1.read()
messageContent[1] = Serial1.read()
short int messageContent = Serial1.read()<<8+Serial.read();