|
引用 6 楼 shuiyan 的回复:
显然打印机是UART 232通讯协议。不过确认一下是不是MAX232或者ISL232之类的RS232协议转换芯片,或者直接量一下电压是不是+/-10V的。如果是,那么就是标准的RS232了。
最好不好指望用GPIO口模拟串口,尤其是在操作系统里面,非常麻烦。
设备开放给上层的串口不一定就是COM1 COM2 COM3的,最好遍历一下,从1到10都试一下。像我们的机器一般就是3、5、6的。
我测试了,这回,1到10的返回错误都变成2了(系统找不到指定的文件)
一下是我写的测试代码
for (i=1;i<11;i++)
{
sprintf(chCom,"COM%d:",i);
Du_DebugMsg(chCom);
hPrinter = CreateFile(chCom, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
errCodeA = GetLastError();
if(INVALID_HANDLE_VALUE == hPrinter)
{
sprintf(chrErrMsg,"errMassage %u",errCodeA);
Du_DebugMsg(chrErrMsg);
}
if (i<11 && INVALID_HANDLE_VALUE != hPrinter)
{
sprintf(chrSucMsg,"Success COM %d",i);
Du_DebugMsg(chrSucMsg);
break;
}
}
void Du_DebugMsg(char *szMsg)
{
#if 1
FILE *fp=fopen("\\windows\\debug.txt","a");
if(fp!=NULL)
{
fprintf(fp, "%s\n", szMsg);
fclose(fp);
}
#endif
}
这样话要怎么解决呢? |
|