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

📄 modem资料整理.txt

📁 最简单的Modem(无线网卡)程序
💻 TXT
字号:
    Modem串口程序设计可以分为三种方式:
	1.利用MSCOMM控件编程;
	2.利用WINAPI函数进行程序设计(利用消息机制?)
	3.利用多线程

    如果存在不同线程要对共同的资源进行访问,要注意不同线程之间的同步,并建议采用异步方式进行访问(原因参考:WinXP与WinCE串口的运行机制之比较)。
	
	利用多线程程序设计可能需要用到的函数:
	
    HANDLE CreateEvent(
    LPSECURITY_ATTRIBUTES lpEventAttributes,
    BOOL bManualReset, //TRUE表示创建手动事件句柄,该句柄需用ResetEvent函数设为无信号状态,
    //否则创建一个自动设定事件句柄,当作为等待线程的参数时,会随等待线程的释放而自动设为无信号状态。
    BOOL bInitialState,//该参数为TRUE,表示句柄创建时的初试态即为有信号的,否则为无信号的
    LPCTSTR lpName
    );
    使用举例:
    HANDLE hEvent = CreateEvent(NULL, FALSE, TRUE, NULL);
    if (hEvent == NULL) return;
    .........

	BOOL SetEvent(
    HANDLE hEvent //同步的事件的句柄。
    );//该函数的作用是将用于同步的事件的句柄设为有信号的,即表示共享资源正在被使用。
    
    ResetEvent(
    HANDLE hEvent //同步的事件的句柄。
    );//将同步事件的句柄重置成无信号的事件。
    
    关键节(Critical Seciton),可以防止共享资源被同时访问,它一次只能被一个线程使用,可用于互斥体对象。使用举例:
    CRITICAL_SECTION m_csCommunicationSync;
    
    VOID InitializeCriticalSection(
    LPCRITICAL_SECTION lpCriticalSection //指向关键结的指针
    );//初试化关键节,关键节在使用前必须被初试化。
    使用举例:
    InitializeCriticalSection(&m_csCommunicationSync);
    
    /*用于申请关键节的所有权,保证从此时至LeaveCriticalSection之间的关键的代码不会被别的线程中断,如果在调用EnterCriticalSection时关键节对象已被另一个线程拥有,那么该函数将无限期等待所有权。
*/
    VOID EnterCriticalSection(
    LPCRITICAL_SECTION lpCriticalSection //指向关键节的指针
    );
    使用举例:   
    EnterCriticalSection(&m_csCommunicationSync);
    
    VOID LeaveCriticalSection(
    LPCRITICAL_SECTION lpCriticalSection //指向关键节的指针
    );//离开关键节
    
    HANDLE CreateFile(
	LPCTSTR lpFileName,
	DWORD dwDesiredAccess,
	DWORD dwShareMode,
	LPSECURITY_ATTRIBUTES lpSecurityAttributes,
	DWORD dwCreationDisposition,
	DWORD dwFlagsAndAttributes,
	HANDLE hTemplateFile
	);

    

    利用多线程编程设计的步骤:
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -