关于串口的应用开发
在mobile下,写了一个串口的应用,主要功能是打开串口,然后设置串口属性,发送数据,然后在pc机上HyperTerminal用HyperTerminal来接收文件。
当我的文件使用文本文件的时候,HyperTerminal能够正确地接收,而文件是其他二进制流,比如说.rar的文件,发送给Pc,HyperTerminal接收下来,用Araxis Merge 工具比较,每次测试都不一样,甚至文件大小都差别非常大。
我这里面的程序是固定的,待发送的文件名固定,所以我想发送什么文件,都是把该文件改成指定的文件名称。我怀疑是串口的设置,是不是有什么特殊的地方。
我得代码实现如下:
dcb.DCBlength = sizeof( DCB );
GetCommState( m_hIDComDev, &dcb );
dcb.BaudRate = nBaud;
dcb.fBinary = TRUE; //? 这个参数是否影响。
dcb.fParity = FALSE;
dcb.fOutxCtsFlow = TRUE;
dcb.fRtsControl = RTS_CONTROL_DISABLE;//RTS_CONTROL_HANDSHAKE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDsrSensitivity = FALSE;
dcb.fDtrControl = DTR_CONTROL_DISABLE;//DTR_CONTROL_ENABLE;
dcb.fTXContinueOnXoff = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
dcb.fAbortOnError = TRUE;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.XonChar = 0x11;
dcb.XoffChar = 0x13;
dcb.XonLim = 3000;
dcb.XoffLim = 9000;
SetCommState( m_hIDComDev, &dcb );