串口通信和udp/tcp通信,发送接口函数都是发送字符串,但是你看串口的发送函数ser.write(serial_msg);,serial_msg是这个std::string &serial_msg字符串类型,但是我实际用的时候比如write(tmpdatacb1, 132),tmpdatacb1是个整型数组,但是这么编译使用也没有问题,可以这么理解,这个串口或者udp发送函数输入参数其实是字符数组的指针,也就是一个地址而已,所以相应参数你写的是字符数组名还是整型数组名,它地址应该都是一样的,或者代表的意义是一样的,比如这个udp的sendto函数,它传入字符数组的首地址的时候,还需要传入字符数组的长度,应该就是把这个地址后面这个长度的内的字节都取出来,那么理论上我地址写整型数组的首地址,长度写整型数组的长度,它取出的字节内容应该是一样的。于是我这么改了下xianfei_protocol.cpp里面的发期望欧拉角指令时候的sendto,ret = sendto(sockfd, setAngleChar, 73, 0, (struct sockaddr*)&sock_addr, sizeof(sock_addr));改为ret = sendto(sockfd, setAngleUint8, 72, 0, (struct sockaddr*)&sock_addr, sizeof(sock_addr));,注意长度由73改为了72,因为字符串数组一般末尾还会加上个"\0",所以长度会多1,这么改完编译,没有问题,运行,也控制了吊舱转动到指定角度了,看来我的理解是OK的,这么我以后可能不用专门再把整型数组转为一个二进制相同的转义字符串数组了,现在是用reinterpret_cast函数转的,以前我还更麻烦,手动写个转义字符数组出来。
写TCP UDP以及串口通信时,整型数组转字符串数组发送的便捷操作
于 2024-03-11 09:44:19 首次发布