⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qq调试说明.txt

📁 一个驱鸟设备的程序
💻 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&sum;
	c2=c2&sum;
	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 + -