用windows api写串口程序,如何写成中断形式?

用windows api 写串口,现在能实现同步或异步读写串口,但是如何实现收到一个字符自动进中断这种方式,因在main函数中需要做其他任务 谢谢

可以用多线程。创建一个线程,线程中循环读取串口,一旦读到数据立即做出相应的响应

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/751550
  • 你也可以参考下这篇文章:Windows API程序开发入门
  • 除此之外, 这篇博客: Windows API程序开发入门中的 3.3 窗口过程函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    函数申明及参数
    程序作出反应的函数,共4个参数。

    //格式一定,参数类型不能更改,函数名、参数名可更改
    LRESULT CALLBACK WinSunProc(
    	HWND   hwnd,  //窗口的句柄
    	UINT   uMsg,  //消息的标识
    	WPARAM wParam,  //附加参数
    	LPARAM lParam  //附加参数
    )
    

    (注:格式一定,可直接引用)
    函数体

    {
    	switch(uMsg)
    	{
    	case WM_CHAR:  //用户按下键盘上的某个按键,并弹窗提示
    		char szChar[20];
    		sprintf(szChar,"char is %d",wParam);
    		MessageBox(hwnd,szChar,"提示",MB_OK);
    		break;
    	case WM_LBUTTONDOWN:  //用户按下鼠标左键,弹窗提示并打印在窗口内
    		MessageBox(hwnd,"mouse clicked","提示",MB_OK);
    		HDC hdc;
    		hdc = GetDC(hwnd);
    		TextOut(hdc,0,50,"计算机左键已按下",strlen("计算机左键已按下"));  //0和50是基于窗口而打印的位置
    		ReleaseDC(hwnd,hdc);  //若不释放,则会造成内存泄露!
    		break;
    	case WM_PAINT:  //窗口重绘(窗口水平、竖直发生变化时都会发生窗口重绘)
    		HDC hDC;
    		PAINTSTRUCT ps;
    		hDC = BeginPaint(hwnd,&ps);
    		TextOut(hDC,0,0,"窗口重绘",strlen("窗口重绘"));  //打印文本
    		EndPaint(hwnd,&ps);  //注意及时结束重绘!
    		break;
    	case WM_CLOSE:  //点击关闭按钮时,做出反应
    		if(IDYES == MessageBox(hwnd,"是否真的结束?","提示",MB_YESNO))
    		{
    			DestroyWindow(hwnd);  //销毁窗口
    		}
    		break;
    	case WM_DESTROY:  //窗口销毁时,接收到销毁消息
    		PostQuitMessage(0);  //结束程序
    		break;
    	default:
    		return DefWindowProc(hwnd,uMsg,wParam,lParam);  //对不感兴趣的消息进行缺省处理(注:该部分不可以删除,否则窗口不能正常显示)
    	}
    	return 0;
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^