题目太大了。我提几个建议:
测试我倒有个法子:用串口线连接Com1,Com2。用两个程序,一个接受,一个发送。不就可以了。
编程的话,请参考《Windows95 通信编程》,里面有详细的例子。你可以发邮件给我,
有些问题我还是能回答的。
可以给我分吗?
测试我倒有个法子:用串口线连接Com1,Com2。用两个程序,一个接受,一个发送。不就可以了。
编程的话,请参考《Windows95 通信编程》,里面有详细的例子。你可以发邮件给我,
有些问题我还是能回答的。
可以给我分吗?
解决方案 »
- 为什么ATL工程自动生成的.rgs文件,只有类型库的GUID,没有接口的GUID?
- Com当中的"Container"和"Site"这两个概念到底有什么区别呢?
- Debug下工程编译成功,'Release下编译在报错
- 一个关于位图的困惑
- 麻烦高手帮忙看下...
- 怎么样把变量写入ACCESS中(即保存数据)
- 我的图象颜色位数怎么变成八位的啦
- 各位DX好,MDI中如何判断所有文档已经关闭?
- dao能直接打开一个SQLSERVER 数据库么 能的话 怎么打开
- CScrollView如何隐藏滚动条(英雄帖)
- 如何让程序作为另个程序的附件被启动。
- 在Win98下,MFC中如何实现比Timer更短更精确的定时服务?
另外你可以看看MSDN中关于串口的经典程序TTY的例子,
相信会对你有所帮助。
hComm是串行口的句柄,PORT可以直接设置成"COM1"或者COM2等
其他的参数可以参照MSDN里的说明
WRITEFILE()的用法是一样的
....DCBdcb;
COMMTIMEOUTS timeouts;
char szComName[32]; sprintf(szComName,"COM%1d",nComNo);
hModem = CreateFile(szComName,GENERIC_READ and GENERIC_WRITE,
0, 0, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0); if(hModem != INVALID_HANDLE_VALUE){
if(!GetCommState(hModem, &dcb))goto _open_err;
dcb.BaudRate = 38400;//115200;//38400;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT; // Apply the new comm port settings
if (!SetCommState(hModem,&dcb))goto _open_err; // Change the ReadIntervalTimeout so that
// ReadFile will return immediately. See help file
timeouts.ReadIntervalTimeout = MAXDWORD;
timeouts.ReadTotalTimeoutMultiplier = 0;
timeouts.ReadTotalTimeoutConstant = 0;
timeouts.WriteTotalTimeoutMultiplier = 0;
timeouts.WriteTotalTimeoutConstant = 0;
SetCommTimeouts(hModem, &timeouts ); // Set the Data Terminal Ready line
EscapeCommFunction(hModem, SETDTR);
// Send an "at" command to the modem
// Be sure to use \r rather than \n
ResetModem(hModem);
}
return hModem;
_open_err:
CloseModem(hModem);
hModem = INVALID_HANDLE_VALUE;
return hModem;
}
void CloseModem(HANDLE hModem)
{
if(hModem != INVALID_HANDLE_VALUE){
CloseHandle(hModem);
}
******************************************************
HANDLE hModem;
DCBdcb;
COMMTIMEOUTS timeouts;
hModem = CreateFile("COM1",GENERIC_READ and GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);
GetCommState(hModem, &dcb)
dcb.BaudRate = 38400;//115200;//38400;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hModem,&dcb);
timeouts.ReadIntervalTimeout = MAXDWORD;
timeouts.ReadTotalTimeoutMultiplier = 0;
timeouts.ReadTotalTimeoutConstant = 0;
timeouts.WriteTotalTimeoutMultiplier = 0;
timeouts.WriteTotalTimeoutConstant = 0;
SetCommTimeouts(hModem, &timeouts );
EscapeCommFunction(hModem, SETDTR);
WriteFile(hModem,&byte,1,&numWrite, 0);
ReadFile(hModem,&byte,1,&numRead, 0);
*********************************************
http://www.midatech.com/csdn/expert/TopicView.asp?id=1673
单机调试:
(1)把COM1和COM2设成相同的参数,如波特率、停止位和寄偶校验等,用其中一个发,另一个收。
(2)只有一个串口,可以自己发,自己收:把串口的发和收接到一起,其他引角悬空,如果写到这个串口数据还能读出同样数据说明程序正确。