我正在试验connectionPi串行库和树莓派3。目前,我在树莓派上短路了TX和RX引脚,正在向串行线写入字符,然后尝试读取输出。我正在运行下面的代码。
#include <wiringPi.h>
#include <wiringSerial.h>
#include <iostream>
#include <string>
int main(void){
if(wiringPiSetup == -1){return -1;}
int fd;
std::string device = "/dev/ttyS0";
fd = serialOpen(device.c_str(), 115200);
std::string command = "AT";
serialPuts(fd, command.c_str());
/* For whatever reason, serialDataAvail(fd) returns 0 here so I am
manually setting chars so the loop below will run */
int chars = 2;
//std::cout << "Char Available: " << chars << std::endl;
for(int i = 0; i < chars; i++){
std::cout << serialGetchar(fd);
}
std::cout << "\n";
serialFlush(fd);
serialClose(fd);
return 1;
}
当我使用 serialGetchar(fd)读取字符时,会得到 UTF-8 字符代码的一部分。该程序的输出如下。
6584
1-为什么它们不显示为完整的UTF-8代码A(\ u0065)和T(\ u0084)?
2-什么是解决格式问题的最佳方法?有没有办法从serialGetchar(fd)读取输出作为正常字符,还是我需要解析输出并将其转换?
3-为什么即使有两个字符,serialDataAvail(fd)仍返回0?