我想通过C中的串行端口连接写入“ 11111111”,但是,from中的write()将读取每个1作为字符并发送二进制表示形式1,即“ 0011 0001”,如何我解决了这个问题。我正在使用此处的代码打开并通过串行端口How to open, read, and write from serial port in C?
写入char * data =“ 11111111”; char c = strtol(data,0,2);
write(port,c,8);
不起作用。可以确认,它可以被编译,但是没有发送信号。
答案 0 :(得分:0)
您要写一个由8个“ 1”字符组成的字符串。
由于您的数据为8位,而char为8位长,因此您可以将其存储在单个char中。
char data = 0xFF;
write(port,&data,1);
应该做到这一点。
使用十六进制作为0xFF的Im等于二进制的11111111。 另外请注意,您应该向数据传递指针以编写函数。 如果使用的是数据数组,则可以将数组本身作为数组传递,而指针和C基本上是同一回事。
如果您有更多数据,只需数字将它们保存在一个字符数组中,然后相应地设置字节数(上面的代码中的1)。