我有一个Arduino通过USB连接到我的电脑。从中我尝试从COM端口读取。
任何人都可以看到这是否有任何明显错误?
void main()
{
int exitStatus;
unsigned int bytesToRead = 1;
unsigned char *buffer = (unsigned char*) malloc(sizeof(unsigned char) + 1);
Serial *connection = new Serial("COM3");
if(connection->IsConnected()){
exitStatus=connection->ReadData(buffer, bytesToRead);
if( *buffer > 0)
<statement I'm trying to hit>
}
}
现在它总是击中'我试图击中的声明',即使它不应该。调试它总是表明缓冲区的内容很多垃圾。我知道串口输入的内容应该是正确的,因为从我在串行监视器中看到的情况来看,它看起来都很好。
思想?
答案 0 :(得分:3)
您没有评估exitStatus
变量,这可能表明读取成功。
如果你只想读取一个字节,你也不需要malloc内存,只需将指针传递给一个本地char变量即可。
虽然我在这里,但主要的类型是int main()
或int main(int argc, char** argv)
int main()
{
int exitStatus;
unsigned int bytesToRead = 1;
unsigned char buffer;
Serial *connection = new Serial("COM3");
if(connection->IsConnected()){
exitStatus=connection->ReadData(&buffer, 1);
if((exitStatus == <Insert the value for a correct read status>) && (buffer != '0'))
<statement I'm trying to hit>
}
return 0;
}
<强>更新强> 将!= 0检查更改为!='0',因为我怀疑串行接口有一个'0'字符(= 0x30)。