CH9326——USB芯片SDK使用步骤

一、

CH9326DllInt();//初始化SDK

//通过VID和PID打开HID设备
m_hHID = CH9326OpenDevice( 0xe316, 0x0707 );
if(m_hHID==INVALID_HANDLE_VALUE)
{
	AfxMessageBox("打开HID设备失败");
	return ;
}

if( FALSE == CH9326SetRate( m_hHID, 13, 4, 1, 4, 0x10 ) )
{
	AfxMessageBox("波特率设置失败");
	return ;
}	

//为接收函数新建个线程					
HANDLE hThread1 = CreateThread(NULL,0,RecvProc,this,0,NULL);
CloseHandle(hThread1);

二、在接收线程中

DWORD WINAPI CHIDCom::RecvProc(LPVOID lpParameter)
{
//接收参数
CHIDCom *pThis = (CHIDCom *)lpParameter;

ULONG len;

//初始化线程和私有堆
if( !CH9326InitThreadData(pThis->m_hHID) )
{
	AfxMessageBox("接收初始化失败");
	return 0;
}
//读线程中数据
while(1)
{
	len = sizeof(pThis->m_ReceiveBuffer);
	if( FALSE == CH9326ReadThreadData(pThis->m_hHID,pThis->m_ReceiveBuffer,&len) )//接收数据
	{
		AfxMessageBox("接收函数调用失败,请关闭软件重新运行");//拔掉设备时会提示
		break;
	}
	if(len != 0)
	{	//收到数据
		…………//处理步骤    				
	}
}
//停止内部线程读取
CH9326StopThread(pThis->m_hHID);
//返回
return 0;
}

三、发送数据
HANDLE hEventObject=CreateEvent(NULL,TRUE,TRUE,"");//根据SDK要求创建时间对象
//HID发送
if( FALSE == CH9326WriteData( m_hHID, m_SendBuffer, 31, hEventObject ) )//发送数据
{
AfxMessageBox(“发送失败”);
CloseHandle(hEventObject);//关闭时间对象句柄
return;
}
//发送成功
CloseHandle(hEventObject);//关闭时间对象句柄
return;

你可能感兴趣的:(通讯)