我用
while( file1.ReadString( szLine ) )
{
m_strSend+= szLine;
m_strSend+="\r\n" ;
GetDlgItem(IDC_send)->SetWindowText(m_strSend);
m_ctrlComm.SetOutput(COleVariant(m_strSend));//发送数据
}//一行一行的发文件内容用下面函数处理数据,结果,每次将一行的内容8个8个的显示 求修改,或指点
void CPc_pcDlg::OnOnCommMscomm1()
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组
CString strtemp; if((m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtem
m_strReceive+=strtemp; //加入接收编辑框对应字符串
}
m_strReceive+="\r\n" ;
GetDlgItem(IDC_receive)->SetWindowText(m_strReceive);
}
}
while( file1.ReadString( szLine ) )
{
m_strSend+= szLine;
m_strSend+="\r\n" ;
GetDlgItem(IDC_send)->SetWindowText(m_strSend);
m_ctrlComm.SetOutput(COleVariant(m_strSend));//发送数据
}//一行一行的发文件内容用下面函数处理数据,结果,每次将一行的内容8个8个的显示 求修改,或指点
void CPc_pcDlg::OnOnCommMscomm1()
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组
CString strtemp; if((m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtem
m_strReceive+=strtemp; //加入接收编辑框对应字符串
}
m_strReceive+="\r\n" ;
GetDlgItem(IDC_receive)->SetWindowText(m_strReceive);
}
}
串口,收发数据都是串行方式,每次都是1bit。楼主好好体会。
view1->m_Comm1.put_CommPort(1); //串口1
view1->m_Comm1.put_InBufferSize(4096); //设置输入缓冲区的大小,Bytes
view1->m_Comm1.put_OutBufferSize(2048); //设置输入缓冲区的大小,Bytes
if(!view1->m_Comm1.get_PortOpen()) //打开串口
{
view1->m_Comm1.put_PortOpen(true);
}
view1->m_Comm1.put_OutBufferCount(0);// '清空发送缓冲区
view1->m_Comm1.put_InBufferCount(0);// '滑空接收缓冲区view1->m_Comm1.put_InputMode(1); //设置输入方式为二进制方式
view1->m_Comm1.put_Settings(str); //设置波特率等参数
view1->m_Comm1.put_RThreshold(8); //为8表示有8个字符即引发事件
view1->m_Comm1.put_InputLen(0);
你每次发送前,先根据要发送的数据长度设一下响应字符数:
m_Comm1.put_RThreshold(8); //为8表示有8个字符即引发事件
就是在这里加:
while( file1.ReadString( szLine ) )
{
m_strSend+= szLine;
m_strSend+="\r\n" ;
GetDlgItem(IDC_send)->SetWindowText(m_strSend);m_Comm1.put_RThreshold(m_strSend.GetLength()); //为8表示有8个字符即引发事件m_ctrlComm.SetOutput(COleVariant(m_strSend));//发送数据
}//一行一行的