📄 qq调试说明.txt
字号:
//API函数应该默认就是字符方式传送的???
char str[]="9600,e,7,2";//定义波特率什么的
if(!com2.open(1,str))
MessageBox("open fail", "COM1", MB_OK);
else
com2.set_hwnd(m_hWnd);
//------------------------------
虚拟基类中:
//支持设置字符串 "9600, 8, n, 1"
bool set_dcb(char *set_str)
{
return bool(BuildCommDCB(set_str, &_dcb));
}
//设置内置结构串口参数:波特率,停止位
bool set_dcb(int BaudRate, int ByteSize = 8, int Parity = NOPARITY, int StopBits = ONESTOPBIT)
{
_dcb.BaudRate = BaudRate;
_dcb.ByteSize = ByteSize;
_dcb.Parity = Parity;
_dcb.StopBits = StopBits;
return true;
}
//===============================================
//打开串口 缺省 9600, 8, n, 1
inline bool open(int port)
{
if(port < 1 || port > 1024)
return false;
set_dcb(9600);
_port = port;
return open_port();
}
//---------------------
inline bool open(int port, char *set_str)
{
if(port < 1 || port > 1024)
return false;
if(!BuildCommDCB(set_str, &_dcb))
return false;
_port = port;
return open_port();
}
//关闭串口
inline virtual void close()
{
if(is_open())
{
CloseHandle(_com_handle);
_com_handle = INVALID_HANDLE_VALUE;
}
}
==================================================
void CMyDlg::OnButton1()
{
MessageBox("onbutton1");
//VGA
char str[]="@00WR02080001";
SendTest(str);
//Sleep(500);
Sleep(10);
char str2[]="@00WR02080000";
SendTest(str2);
}
//=====================
void CMyDlg::OnButton2()
{
//AV
char str[]="@00WR02080002";
SendTest(str);
//PostMessage(WM_SLEEPONESECOND,0,0);
Sleep(10);
char str2[]="@00WR02080000";
SendTest(str2);
}
//==========================
void CMyDlg::FCScheck(char senddata[], int i)
{
int j;
BYTE STR[300];
BYTE sum=0x00, c1=0x0f,c2=0xf0;
for(j=0;j<i;j++)
STR[j]=senddata[j];
for(j=0;j<i;j++)
sum^=STR[j]; //异或操作
c1=c1∑
c2=c2∑
c2=c2>>4;
if(c2<=9)
STR[j]=c2+48;
else
STR[j]=c2+55;
if(c1<=9)
STR[j+1]=c1+48;
else
STR[j+1]=c1+55;
STR[j+2]='*';//添加结束符
STR[j+3]=13; //回车符号
i=j+3;
for(j=0;j<=i;j++)
senddata[j]=(char)STR[j];
}
//============================================
void CMyDlg::SendTest(char * str)
{
char TData[300];
int Count= strlen(str);
for(int i=0;i<Count;i++)
TData[i]=str[i];
FCScheck(TData,Count);//给要发送的命令帧添加校验码以及结束符
// MessageBox(TData, "TData:", MB_OK);//???
Count=Count+4;
array.RemoveAll(); //CByteArray array;
array.SetSize(Count);
for(i=0;i<Count;i++)
array.SetAt(i,TData[i]);
m_comm.SetOutput( COleVariant(array) );//发送数据
}
//==================================================
//com组件的响应函数
void CMyDlg::OnComm()
{
// TODO: Add your control notification handler code here
if (m_comm.GetCommEvent() == 2)
{
Sleep(20);//接收到全部数据
COleVariant m_input = m_comm.GetInput();
m_input.ChangeType (VT_BSTR);
m_strReceiveFrame = m_input.bstrVal; // 把接收到的变量赋给应答帧文本框变量
UpdateData (FALSE);
m_comm.SetInBufferCount(0);//??清除接受缓冲区
}
}
//==========================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -