[置顶] 有四个线程1、2、3、4,线程1的功能就是输出1,线程2的功能就是输出2,以此类推......... 现在有四个文件A B C D,初始都为空。现要让四个文件呈如下格式:A:1 2 3 4 1 2..
2018-02-26 14:54
459 查看
模拟串口数据传递
(参考了一些网上的思路,在此表示感谢~)需要注意的是:对于无符号数来说,左移和右移都是用的逻辑移位,即左移低位空出的补0,右移高位空出的补0;
对于有符号数来说,用的是算术移位,左移多出的会移进符号位,右移在gcc编译器下是算术右移,即空出的高位补符号位。详细可参考此处:C语言 有符号数和无符号数的移位运算
#include < stdlib.h > #include < stdio.h > typedef unsigned char uint8; typedef unsigned int uint32; int main(void) { uint32 num1 = 12345678, num2; int num3 = -12345678, num4; float num5 = -1234.567, num6; uint8 TxBuf1[4]; char TxBuf2[4]; int i; //------------------------------------------------ 串口发送无符号整数TxBuf1[0] = num1;// printf("TxBuf[0] = 0x%x\n",TxBuf[0]); TxBuf1[1] = num1 >> 8; // printf("TxBuf[1] = 0x%x\n",TxBuf[1]); TxBuf1[2] = num1 >> 16;// printf("TxBuf[2] = 0x%x\n",TxBuf[2]); TxBuf1[3] = num1 >> 24;// printf("TxBuf[3] = 0x%x\n",TxBuf[3]); num2 = ((uint32)TxBuf1[0] | (uint32)TxBuf1[1]<<8 | (uint32)TxBuf1[2]<<16 | (uint32)TxBuf1[3]<<24); printf("num2 = %d\n",num2); //-------------------------------------------------- 串口发送有符号整数 TxBuf2[0] = *((int *)&num3); TxBuf2[1] = *((int *)&num3) >> 8; TxBuf2[2] = *((int *)&num3) >> 16; TxBuf2[3] = *((int *)&num3) >> 24; num4 = *((int *)TxBuf2); printf("num4 = %d\n",num4); //------------------------------------------------ 串口发送浮点数 TxBuf2[0] = *((int *)&num5); TxBuf2[1] = *((int *)&num5) >> 8; TxBuf2[2] = *((int *)&num5) >> 16; TxBuf2[3] = *((int *)&num5) >> 24; num6 = *((float *)TxBuf2); printf("num6 = %f\n",num6); //------------------------------------------------ 串口发送浮点数 char *p = (char *)&num5; for(i = 0;i < sizeof(float);i++) TxBuf2[i] = *p++; num6 = *((float * ) TxBuf2); printf("num6 = %f\n", num6); return 0; }运行结果:
相关文章推荐
- 有四个线程1、2、3、4,线程1的功能就是输出1,线程2的功能就是输出2,以此类推......... 现在有四个文件A B C D,初始都为空。现要让四个文件呈如下格式:A:1 2 3 4 1 2..
- (Google面试题)有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。初始都为空。
- (Google面试题)有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。初始都为空
- (Google面试题)有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。初始都为空。
- Google面试题—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD【转载】
- Google面试题(java)—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD
- Google面试题(java)—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD
- 多线程---有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD
- Google面试题—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD
- 实现方法: Google面试题—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD
- Google面试题—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD
- 有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推........
- C#——主进程负责向屏幕不间断输出四位随机数,子线程负责每隔 1 秒钟对当前计算机屏幕进行截屏并以 jpg 格式的图片保存文件。
- 用Java写一个多线程程序,如写四个线程,二个加1,二个对一变量减一,输出:
- 使用kettle将csv格式文件输入,sql表输出
- springboot搭建文件预览解决方案,支持目前主流格式office文件,txt文件,png,jpg等图片以及压缩文件的在线预览功能
- 模拟输入H.264流,输出封装格式文件
- [置顶] Hive文件存储格式 :Parquet sparksql ,impala的杀手锏
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- Excel打开csv格式文件并生成图形功能实现方案