我在GPIO引脚上有一个覆盖率为1.25MBaud的覆盆子。树莓派将模仿RS485通信网络中的终端系统。所以希望这是物理层工作:)
我现在正在努力应用层。 c代码库需要Ascii,例如“Hello,world!”。我希望传递二进制流,即“111010111010001010111”,将有5814位:)所以我一直在研究如何将二进制转换为ascii但是只发现了复杂的c ++答案。有人有一个简单的解决方案吗?谢谢你的帮助!
保
答案 0 :(得分:1)
显然,您不需要将字符串分解为API为您执行的操作....
无论如何,如果你这样做了:
你" hello world中的每个字母\ n" string是以ASCII编码时的字节。 ASCII实际上只使用最低的7位。如果你想将一个字符串分成比特,我会使用以下代码作为开始。
char ch = 'h';
for (i=0; i<7; i++) {
bool b = (ch & 1 == 1);
ch >>= 1;
// set the bit value b off to the pin....
}
你需要一个循环来处理整个字符串。
答案 1 :(得分:0)
要将7位ASCII-char逐位移动到端口,可以使用:
void toPort(unsigned char x) {
x |= 0200; // Set unused high-bit to 1
for ( ; ; ) {
char bit = x & 1;
x >>= 1;
if(x == 0) return;
push_to_port(bit);
}
}