【发布时间】:2014-08-13 07:32:07
【问题描述】:
我正在做一个串行 COM 端口 ANSI 字符读取项目。我可以处理发送数据,但我无法处理接收它。任何帮助都会得到帮助。
这是读取函数:
BOOL ReadString(char *outstring)
{
int *length;
*length = sizeof(int);
BYTE data;
BYTE dataout[8192]={0};
int index = 0;
while(ReadByte(data)== TRUE)
{
dataout[index++] = data;
}
memcpy(outstring, dataout, index);
*length = index;
return TRUE;
}
而 Main.cpp 是:
int main(void)
{
// Configs
hPort = ConfigureSerialPort("COM1");
if(hPort == NULL)
{
printf("Com port configuration failed\n");
return -1;
}
char* cPTR;
for(;;)
{
ReadString(cPTR);
if(cPTR!=NULL) cout << "Scanned Data: " << cPTR << endl;
else cout << "No data recieved." << endl;
}
ClosePort();
return 0;
}
【问题讨论】:
-
出了什么问题?
cPTR从未初始化,因此可能会导致问题,但由于您没有明确说明哪里出了问题,所以很难说。 -
您是否尝试使用 std::string 重写它以逃避手动内存分配?另一点是你有危险的阅读没有边界检查。
-
int *length; *length = sizeof(int);这已经足够崩溃了。 -
如果输入数据中间包含0,剩余数据会丢失。 COM口是二进制流,不是面向文本的。
标签: c++ serial-port dev-c++