遇到问题了……线程中调用MSComm控件的问题

galactic 2009-03-13 10:07:34
我有一个线程UINT ReceiveWait(LPVOID param)要循环不断的处理数据然后用MSComm的SetOutPut把数据给发送出去,但为什么一运行到调用MSComm控件的地方程序就会崩溃呢?难道说MSComm控件不能在线程中使用,还是还需要另外的一些处理,请高手指点,先谢了~~!
...全文
66 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
串行通信主要用了C# 的SerialPort类 开发语言:C# 程序运行环境:.NetFrameWork 2.0以上版本 开发工具:Visual Studio 2008 C# System.IO.Ports命名空间包含了控制串口重要的SerialPort类,该类提供了同步 I/O 和事件驱动的 I/O、对管脚和断状态的访问以 及对串行驱动程序属性的访问,所以在程序代码起始位置需加入Using System.IO.Ports。 串口的通讯参数 a.通讯端口号 [PortName]属性获取或设置通信端口,包括但不限于所有可用的 COM 端口,请注意该属性返回类型为String。通常情况下,PortName正 常返回的值为CO1、COM2……,SerialPort类最大支持的端口数突破了CommPort控件CommPort属性不能超过16的限止,大大方便了用户 串口设备的配置。 b. 通讯格式 SerialPort类对分别用[BaudRate]、[Parity]、[DataBits]、[StopBits]属性设置通讯格式的波特率、数据位、停止位和校验位,其 [Parity]和[StopBits]分别是枚举类型Parity、StopBits,Parity类型枚举了Odd(奇)、Even(偶)、Mark、None、Space,Parity枚 举了None、One、OnePointFive、Two。 SerialPort类提供了七个重载的构造函数,既可以对已经实例化的SerialPort对象设置上述相关属性的值,也可以使用指定的端口名称 、波特率和奇偶校验位数据位和停止位直接初始化 SerialPort 类的新实例。 3.串口的打开和关闭 SerialPort类是调用类的Open()和Close()方法。 4. 数据的发送和读取 Serial类调用重载的Write和WriteLine方法发送数据,其WriteLine可发送字符串并在字符串末尾加入换行符,读取串口缓冲区的方法 有许多,其除了ReadExisting和ReadTo,其余的方法都是同步调用线程被阻塞直到缓冲区有相应的数据或大于ReadTimeOut属性设定 的时间值后,引发ReadExisting异常。 5.DataReceived事件 该事件类似于MSComm控件的OnComm事件,DataReceived事件在接收到了[ReceivedBytesThreshold]设置的字符个数或接收到了文件结 束字符并将其放入了输入缓冲区时被触发。其[ReceivedBytesThreshold]相当于MSComm控件的[Rthreshold]属性,该事件的用法与 MsComm控件的OnComm事件在CommEvent为comEvSend和comEvEof时是一致的
书名:《Delphi串口及语音传真高级编程》(北京航空航天大学出版社.温锦山.唐柱鹏) PDF格式扫描版,全书分为9章,共420页。2002年4月出版。 内容简介 本书是一本介绍Delphi串口及语音传真编程的专著。从介绍Modem直接IO、TAPI编程出发,到介绍全球著名的组件Async Professional(APRO)的属性、方法、事件以及丰富的实例,特别是对语音、传真编程方法进行了深入的剖析,详尽地介绍了APRO的功能。    本书的精华是结合我国电信标准和Modem硬件的实际情况,部分修改了APRO组件的代码,用语音识别的方法解决了在“语音”模式不能判断对方是否挂机、无人接听、忙音、静音等(“数据”模式本来就可以判断),修正了“传真”模式部分内置Modem上不能收发传真的错误,成功地解决了国内语音、传真编程的核心问题。    本书有丰富的实例,是作者多年来对电信编程的心得,是为解决实际问题而编写的,汇集了作者的经验和技巧。本书是电信应用编程的得力助手,可为对Delphi语音、传真编程感兴趣者提供帮助,亦可供广大编程人员及各大专院校师生参考。 目录 第1章 引 言  1.1 delphi组件和vcl  1.2 delphi开发数据库  1.3 oop结构  1.3.1 类  1.3.2 类定义  1.3.3 类的特性  1.3.4 重载的方法和构造函数  1.3.5 继 承  1.4 windows注册表编程  1.5 多线程技术  1.5.1 线程的概念  1.5.2 线程的挂起和继续  1.5.3 多线程同步执行  1.5.4 tthread线程类  1.6 多媒体应用编程  1.7 调制解调器基础  1.7.1 pc串口的针脚分配  1.7.2 调制解调器工作原理  1.7.3 调制解调器的流控制 . 1.7.4 at命令 第2章 直接io及tapi编程  2.1 串行口api函数  2.1.1 常用的串行通信操作函数  2.1.2 delphi下的具体实现方法  2.2 mscomm32控件  2.2.1 用mscomm32.ocx代替繁琐的api函数调用  2.2.2 mscomm控件的安装  2.2.3 mscomm的主要属性和事件  2.2.4 mscomm32的使用例子  2.2.5 程控机计费系统的接收模块  2.3 tapi简介  2.3.1 关于tapi  2.3.2 tsp  2.3.3 tapi提供的服务与tapi硬件的关系  2.4 tapi实例  2.4.1 tapi通信的基本步骤  2.4.2 tapi函数  2.4.3 利用tapi编写实用的程序  2.5 第三方组件简介  2.5.1 turbopower apro  2.5.2 voice modem library组件  2.5.3 其他组件及控件  2.5.4 apro的优点 第3章 apro基本控件  3.1 端口操作控件  3.1.1 tapdcomport控件  3.1.2 comportform的例子  3.1.3 tapdwinsockport控件  3.1.4 tapdwinsockport的例子  3.2 拨号控件  3.2.1 tapdrasdialer控件  3.2.2 tapdrasstatus控件  3.2.3 拨号连接的例子  3.3 ftp文件传输控件  3.3.1 tapdftpclient控件  3.3.2 tapdftplog控件  3.3.3 ftp客户操作的例子  3.4 数据传输控件  3.4.1 tapddatapacket控件  3.4.2 数据包处理的例子  3.4.3 tapdscript控件  3.4.4 脚本编程的例子  3.5 modem控件  3.5.1 tapdsmodem控件  3.5.2 tapdslcontroller控件  3.5.3 tapdstatuslight控件  3.5.4 tapdsmodem的例子  3.6 终端控件  3.6.1 tadterminal控件  3.6.2 tadttyemulator控件  3.6.3 tadvt100emulator控件  3.6.4 termdemo的例子 第4章 传真控件  4.1 传真文件格式转换  4.1.1 tapdfaxconverter控件  4.1.2 传真文件转换源代码  4.2 收发传真控件  4.2.1 tapdsendfax控件  4.2.2 tapdreceivefax控件  4.2.3 tapdfaxstatus控件  4.2.4 tapdfaxlog控件  4.2.5 收发传真的例子  4.3 浏览传真文件控件  4.3.1 tapdfaxviewer控件  4.3.2 浏览传真文件的源代码  4.3.3 tapdfaxunpacker控件  4.3.4 传真文件解压的例子  4.4 传真打印控件  4.4.1 tapdfaxprinter控件  4.4.2 tapdfaxdriverinterface控件  4.4.3 打印状态监视的例子  4.4.4 tapdfaxprinterstatus控件  4.4.5 tapdfaxprinterlog控件  4.4.6 传真文件打印的例子  4.5 传真客户/服务器控件  4.5.1 tapdfaxserver控件  4.5.2 tapdfaxservermanager控件  4.5.3 tapdfaxclient控件  4.5.4 传真任务管理的例子 第5章 tapi控件  5.1 tapdtapidevice控件  5.2 tapdtapistatus控件  5.3 tapdtapilog控件 第6章 apro2.x  6.1 终端仿真控件  6.1.1 tapdterminal控件  6.1.2 tapdbpterminal控件  6.1.3 tapdemulator控件  6.1.4 tapdkeyboardemulator控件  6.2 modem控件  6.2.1 tapdinidbase控件  6.2.2 tapdmodemdbase控件  6.2.3 tapdmodem控件  6.2.4 tapdphonebook控件  6.2.5 tapdphonebookeditor控件  6.2.6 tapdphonenumberselector控件  6.2.7 tapdmodemdialer控件  6.2.8 tapddialerdialog控件  6.2.9 示例代码 第7章 语音自动应答系统  7.1 一个较简单的语音应答程序  7.2 完整的语音自动应答系统  7.2.1 系统概述及整体方案  7.2.2 被更改的控件代码adtapi.pas  7.2.3 主程序窗口  7.2.4 电话号码簿模块  7.2.5 wave格式转换模块  7.2.6 录音文件管理模块  7.2.7 tapi设备管理模块  7.3 疑难解答与调试  7.3.1 疑难解答  7.3.2 调 试 第8章 收发传真系统  8.1 系统概述  8.2 整体方案  8.3 系统应用  8.4 源代码剖析  8.4.1 主程序模块  8.4.2 设计传真页面模块  8.4.3 解压线程  8.4.4 压缩线程  8.5 疑难解答与调试  8.5.1 疑难解答  8.5.2 调 试 第9章 监视串口的windows内核编程  9.1 内核程序编写初步  9.2 实现步骤  9.3 源码分析  9.3.1 动态连接库模块  9.3.2 截取api的公共单元  9.3.3 主程序模块 附 录  附录a 组件的安装  附录b at命令一览表

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧