如何实现pc机上的com口通信

如何实现pc机上的com口通信,第1张

狂晕中....给你linux代码,你就问windows,给你windows串口控制方式,你就问linux,I 服了 You。

区别很大,两个不同的 *** 作系统,在应用串口上就有所不同,但大体上,还是有共同点,1、设置串口,2、打开串口,3、读写数据,4、异常处理,5、关闭串口

这一系列的控制逻辑都大体相同,只是在代码实现上有所不一样,毕竟两种 *** 作系统内核结构就不一样,linux的串口设置属性是通过头文件#include <termios.h>的struct termios结构实现,而windows的串口属性是commprop结构设定,其他的读写串口,都有相应的读写文件函数,两种系统都是把串口当作一个设备文件来读写,所以这里就不难理解,为什么使用文件函数来处理串口。linux下可以使用标准C库函数来控制读写串口,windows下可以使用WINDOWS API函数来做串口读写,具体请参看《windows API 大全》以及下文给出的参考地址,也是有详细的说明

在PC机上实现COM口通信并不困难,可你得说清楚是什么 *** 作系统,不同的 *** 作系统,控制串口的区别是很大。

在Windows系统上 *** 作串口可以使用三种方式:MSCOMM控件,WINDOWS API,第三方控件

WINDOWS API使用起来相对麻烦些,主要是在设置串口属性、查询读取方面及异常处理方面。这里简要说下控制串口步骤:

1.打开串口:

使用createfile()打开串口,createfile()将返回串口的句柄。

handle createfile(

lpctstr lpfilename, // pointer to name of the file

dword dwdesiredaccess, // access (read-write) mode

dword dwsharemode, // share mode

lpsecurity_attributes lpsecurityattributes, // pointer to security attributes

dword dwcreationdistribution, // how to create

dword dwflagsandattributes, // file attributes

handle htemplatefile // handle to file with attributes to copy

)

lpfilename: 指明串口制备,例:com1,com2

dwdesiredaccess: 指明串口存取方式,例:generic_read|generic_write

dwsharemode: 指明串口共享方式

lpsecurityattributes: 指明串口的安全属性结构,null为缺省安全属性

dwcreateiondistribution: 必须为open_existin

dwflagandattributes: 对串口唯一有意义的是file_flag_overlapped

htemplatefile: 必须为null

2.关闭串口:

closehandle(hcommdev)

3.设置缓冲区长度:

bool setupcomm(

handle hfile, // handle of communications device

dword dwinqueue, // size of input buffer

dword dwoutqueue // size of output buffer

)

4.commprop结构:

可使用getcommproperties()取得commprop结构,commprop结构中记载了系统支持的各项设置。

typedef struct _commprop { // cmmp

word wpacketlength// packet size, in bytes

word wpacketversion// packet version

dword dwservicemask// services implemented

dword dwreserved1// reserved

dword dwmaxtxqueue// max tx bufsize, in bytes

dword dwmaxrxqueue// max rx bufsize, in bytes

dword dwmaxbaud// max baud rate, in bps

dword dwprovsubtype// specific provider type

dword dwprovcapabilities// capabilities supported

dword dwsettableparams// changeable parameters

dword dwsettablebaud// allowable baud rates

word wsettabledata// allowable byte sizes

word wsettablestopparity// stop bits/parity allowed

dword dwcurrenttxqueue// tx buffer size, in bytes

dword dwcurrentrxqueue// rx buffer size, in bytes

dword dwprovspec1// provider-specific data

dword dwprovspec2// provider-specific data

wchar wcprovchar[1]// provider-specific data

} commprop

dwmaxbaud:

baud_075 75 bps

baud_110 110 bps

baud_134_5 134.5 bps

baud_150 150 bps

baud_300 300 bps

baud_600 600 bps

baud_1200 1200 bps

baud_1800 1800 bps

baud_2400 2400 bps

baud_4800 4800 bps

baud_7200 7200 bps

baud_9600 9600 bps

baud_14400 14400 bps

baud_19200 19200 bps

baud_38400 38400 bps

baud_56k 56k bps

baud_57600 57600 bps

baud_115200 115200 bps

baud_128k 128k bps

baud_user programmable baud rates available

dwprovsubtype:

pst_fax 传真设备

pst_lat lat协议

pst_modem 调制解调器设备

pst_network_bridge 未指定的网桥

pst_parallelport 并口

pst_rs232 rs-232口

pst_rs422 rs-422口

pst_rs423 rs-432口

pst_rs449 rs-449口

pst_scanner 扫描仪设备

pst_tcpip_telnet tcp/ip telnet协议

pst_unspecified 未指定

pst_x25 x.25标准

dwprovcapabilities

pcf_16bitmode 支持特殊的16位模式

pcf_dtrdsr 支持dtr(数据终端就绪)/dsr(数据设备就绪)

pcf_inttimeouts 支持区间超时

pcf_parity_check 支持奇偶校验

pcf_rlsd 支持rlsd(接收线信号检测)

pcf_rtscts 支持rts(请求发送)/cts(清除发送)

pcf_setxchar 支持可设置的xon/xoff

pcf_specialchars 支持特殊字符

pcf_totaltimeouts 支持总(占用时间)超时

pcf_xonxoff 支持xon/xoff流控制

标准rs-232和window支持除pcf_16bitmode和pcf_specialchar外的所有功能

dwsettableparams

sp_baud 可配置波特率

sp_databits 可配置数据位个数

sp_handshaking 可配置握手(流控制)

sp_parity 可配置奇偶校验模式

sp_parity_check 可配置奇偶校验允许/禁止

sp_rlsd 可配置rlsd(接收信号检测)

sp_stopbits 可配置停止位个数

标准rs-232和window支持以上所有功能

wsettabledata

databits_5 5个数据位

databits_6 6个数据位

databits_7 7个数据位

databits_8 8个数据位

databits_16 16个数据位

databits_16x 通过串行硬件线路的特殊宽度路径

windows 95支持16的所有设置

5.dcb结构:

typedef struct _dcb {// dcb

dword dcblength// sizeof(dcb)

dword baudrate// current baud rate

指定当前的波特率

dword fbinary: 1// binary mode, no eof check

指定是否允许二进制模式,

windows 95中必须为true

dword fparity: 1// enable parity checking

指定奇偶校验是否允许

dword foutxctsflow:1// cts output flow control

指定cts是否用于检测发送控制。

当为true是cts为off,发送将被挂起。

dword foutxdsrflow:1// dsr output flow control

指定cts是否用于检测发送控制。

当为true是cts为off,发送将被挂起。

dword fdtrcontrol:2// dtr flow control type

dtr_control_disable值将dtr置为off, dtr_control_enable值将dtr置为on, dtr_control_handshake允许dtr"握手",dword fdsrsensitivity:1// dsr sensitivity 当该值为true时dsr为off时接收的字节被忽略

dword ftxcontinueonxoff:1// xoff continues tx

指定当接收缓冲区已满,并且驱动程序已经发

送出xoffchar字符时发送是否停止。

true时,在接收缓冲区接收到缓冲区已满的字节xofflim且驱动程序已经发送出xoffchar字符中止接收字节之后,发送继续进行。

false时,在接收缓冲区接收到代表缓冲区已空的字节xonchar且驱动程序已经发送出恢复发送的xonchar之后,发送继续进行。

dword foutx: 1// xon/xoff out flow control

true时,接收到xoffchar之后便停止发送

接收到xonchar之后将重新开始

dword finx: 1// xon/xoff in flow control

true时,接收缓冲区接收到代表缓冲区满的xofflim之后,xoffchar发送出去

接收缓冲区接收到代表缓冲区空的xonlim之后,xonchar发送出去

dword ferrorchar: 1// enable error replacement

该值为true且fparity为true时,用errorchar 成员指定的字符代替奇偶校验错误的接收字符

dword fnull: 1// enable null stripping

true时,接收时去掉空(0值)字节

dword frtscontrol:2// rts flow control

rts_control_disable时,rts置为off

rts_control_enable时, rts置为on

rts_control_handshake时,

当接收缓冲区小于半满时rts为on

当接收缓冲区超过四分之三满时rts为off

rts_control_toggle时,

当接收缓冲区仍有剩余字节时rts为on ,否则缺省为off

dword fabortonerror:1// abort reads/writes on error

true时,有错误发生时中止读和写 *** 作

dword fdummy2:17// reserved

未使用

word wreserved// not currently used

未使用,必须为0

word xonlim// transmit xon threshold

指定在xon字符发送这前接收缓冲区中可允许的最小字节数

word xofflim// transmit xoff threshold

指定在xoff字符发送这前接收缓冲区中可允许的最小字节数

byte bytesize// number of bits/byte, 4-8

指定端口当前使用的数据位

byte parity// 0-4=no,odd,even,mark,space

指定端口当前使用的奇偶校验方法,可能为:

evenparity,markparity,noparity,oddparity

byte stopbits// 0,1,2 = 1, 1.5, 2

指定端口当前使用的停止位数,可能为:

onestopbit,one5stopbits,twostopbits

char xonchar// tx and rx xon character

指定用于发送和接收字符xon的值

char xoffchar// tx and rx xoff character

指定用于发送和接收字符xoff值

char errorchar// error replacement character

本字符用来代替接收到的奇偶校验发生错误时的值

char eofchar// end of input character

当没有使用二进制模式时,本字符可用来指示数据的结束

char evtchar// received event character

当接收到此字符时,会产生一个事件

word wreserved1// reserveddo not use 未使用

} dcb

6.改变端口设置

使用如下的两个方法

bool getcommstate(hcomm,&dcb)

bool setcommstate(hcomm,&dcb)

7.改变普通设置

buildcommdcb(szsettings,&dcb)

szsettings的格式:baud parity data stop

例: "baud=96 parity=n data=8 stop=1"

简写:"96,n,8,1"

szsettings 的有效值

baud:

11 or 110 = 110 bps

15 or 150 = 150 bps

30 or 300 = 300 bps

60 or 600 = 600 bps

12 or 1200 = 1200 bps

24 or 2400 = 2400 bps

48 or 4800 = 4800 bps

96 or 9600 = 9600 bps

19 or 19200= 19200bps

parity:

n=none

e=even

o=odd

m=mark

s=space

data:

5,6,7,8

stopbit

1,1.5,2

8.commconfig结构:

typedef struct _comm_config {

dword dwsize

word wversion

word wreserved

dcb dcb

dword dwprovidersubtype

dword dwprovideroffset

dword dwprovidersize

wchar wcproviderdata[1]

} commconfig, *lpcommconfig

可方便的使用bool commconfigdialog(

lptstr lpszname,

hwnd hwnd,

lpcommconfig lpcc)

来设置串行口。

9.超时设置:

可通过commtimeouts结构设置超时,

typedef struct _commtimeouts {

dword readintervaltimeout

原文参考《VC实现串口通信例程》 作者:阮帮秋

http://www.mp3sea.net/Visual-C/2007-3-22/VC-ShiXianChuanKouTongShenLiChengZuoZhe-RuanBangQiu-bbjm10723.htm

下次记得把问题一次提出来。即便是帮你找资料,也方便一些。

 

为了更好的保障消费者的利益,一汽-大众销售有限责任公司承诺为进口奥迪新能源 汽车 提供以下质保:

(1)整车: 3年/10万公里(以先到者为准)

(2)动力电池系统: 8年/16万公里(以先到者为准)

(3)电机系统: 8年/12万公里(以先到者为准)

(4)电控系统: 8年/12万公里(以先到者为准)

     (1)一汽-大众销售有限责任公司将在交付用户的随车使用文件中明示零件质量担保期;

     (2)一汽-大众销售有限责任公司将在《质量担保规定》中明示零件质量担保期并下发、通知一汽-大众销售有限责任公司奥迪特许经销商;

     (3)一汽-大众销售有限责任公司将在系统中设定零件的质量担保期。

        针对新能源车可能出现的相关故障处理,特许经销商均已配备Odis诊断和服务系统。系统对新能源车的相关维修问题和工时做了具体规定。特许经销商将在规定时间内完成对车辆的维修。

        对电动车使用、维修过程中出现的状况,如 汽车 产品在包修期内,因产品质量问题每次修理时间(包括等待修理备用件时间)超过5日的,我们将为消费者提供替换车或者给予合理的交通补偿方式。

        在质量担保期内,车辆出现的质量问题用户有权向奥迪经销商提出索赔要求。经销商立即对其故障进行诊断并排除,损坏的零部件根据技术要求进行修复或更换,更换下的损伤件归属一汽-大众销售有限责任公司,并由一汽-大众销售有限责任公司指定授权方进行统一处理。

        一汽-大众销售有限责任公司针对奥迪新能源车同时提供了完善的商品车零部件质量担保、备件质量担保、零部件修复或换件以及索赔规定和流程,保证所有整车零部件(含动力电池系统、电机系统、电控系统)和备件(含动力电池系统、电机系统、电控系统)无论在售前还是售后都能得到完善的处置。

        为响应国家三包规定的要求,一汽-大众销售有限责任公司制订了高于国家规定的政策,适用于其所销售的所有奥迪车型,以更好地保障消费者的三包权益。具体信息参见三包凭证。

   (一)授权经销商布局

        为了能对新能源车型客户提供优质的服务,一汽-大众销售有限责任公司从全国经销商网络中遴选出服务质量优秀的代表性经销商从事奥迪新能源 汽车 的销售工作。一汽-大众销售有限责任公司参考了新能源车在各城市销售情况、未来的市场潜力、不同企业网络布局以及经销商能力等具体指标,针对新能源 汽车 未来的产销量规划进行了新能源 汽车 销售网络规划。

        在其传统燃油车优质服务的基础上,一汽-大众销售有限责任公司通过对其进行专业的新能源车销售和售后培训,配备专用的工具/设备,安装基础充电设施,以确保每家经销商均能提供优质、高效、专业的新能源车服务。

        至今为止,奥迪新能源授权经销商已经达到129家,覆盖28个省、市、自治区和直辖市,未来随着更多新能源车型的推出,新能源车授权经销商网络还将进一步扩大,继续秉承一贯的高品质服务标准向客户提供高质量的服务,满足日益增长的新能源车市场需求和客户需求。

    (二)经销商配置

      基础设施

        为了满足新能源车在展示、试驾、维修和保养时的充电需要,以及为车主提供充电服务,新能源授权经销商均已经按照分阶段标准配备充电设施。

      设备/工具

        一汽-大众销售有限责任公司承诺每个奥迪授权经销商均已完全配备保养和维修新能源车所需的专用工具/设备,最大限度的提高维修质量和缩短维修时间。同时,经销商还拥有电动 汽车 专用备品。电动车专用维修工位不少于2个,乘用车维修工位至少具备举升机,维修现场有明确的检、修作业 *** 作规程。新能源车的专用维修设备/工具主要包括:

     (1)用于拆卸和安装动力电池、发动机和变速器的专用工具;

     (2)高压电系统的安全监测设备、线缆和接头;

     (3)用于电机电控系统诊断的传感器和设备;

     (4)用于充电系统的软件升级和PIN码重置设备;

     (5)检修人员安全防护设备:绝缘、耐酸、耐压安全手套、绝缘劳保鞋、合适的高压防护工具(符合VDE标准)、护目镜。

      维修人员资质

        为满足新能源车服务维修需要,一汽-大众销售有限责任公司已对每个授权经销商配备通过认证及培训的高电压维修技师以及服务顾问。同时公司对服务顾问也进行了新能源车的专项培训,保证顾问可以正确地为新能源车主服务。

        一汽-大众销售有限责任公司高压电技师都具备国家认可的高电压 *** 作资质并取得地方安监部门核发的《电工 *** 作证》,并且高压电技师只有在参加相关培训,并通过理论知识和实践 *** 作考核后,才能获得相应的资格证书,并实施相关维修和诊断 *** 作。

    (三)维修/保养/技术支持

        在售后服务方面,在经销商处设有电动 汽车 专用接待柜台,其中服务流程、维修服务费、电动 汽车 专用备品件具有明码标价及公示,从而为顾客提供简单便利的保养、专业可靠的维修以及高效的技术支持服务。

      专业可靠的维修

        一汽-大众销售有限责任公司新能源车型的维修仅由授权经销商完成。所有的待维修新能源车,将由高压电技师进行诊断后分类处理:不涉及高压电,且不存在安全隐患的车辆维修作业,按传统能源车辆维修流程进行;涉及电池、电机或是存在危险的维修,将由一汽-大众销售有限责任公司认证高压电技师完成。

        维修期间,对于符合质量担保条例且非用户原因导致车辆停用的车辆用户,或是用户车辆情况符合一汽-大众销售有限责任公司下发相关维修通知或特殊政策的用户,授权经销商视情况为顾客提供替换车。

        对于其它情况的用户,在维修期间如有使用替换车服务的需求,经销商有偿提供替换车服务,收费标准不高于当地租赁公司同等车型租赁费用的60%。

      高效的技术支持

        一汽-大众销售有限责任公司拥有一套完整的故障解决流程体系,包括:车辆故障信息反馈、PCC/LPCC(优先客户抱怨)报告发布、问题分析、措施制定及产品技术信息的发布,通过故障解决流程不断推动用户抱怨问题快速、有效、及时的解决,提升用户满意度。

        一汽-大众销售有限责任公司建立产品技术信息发布程序,通过产品技术信息告知经销商最新的技术解决方案,指导经销商正确维修车辆、快速解决用户抱怨,提升用户满意度。

        同时,一汽-大众销售有限责任公司准备了新能源产品的技术专家和高压电专家,可以向授权经销商和提供快速有效的技术支持。

windows程序设计是消息驱动

消息->处理消息->消息->处理消息........

你这问题中先是得到鼠标点的那个消息

然后处理消息对应是:更改配置(比如画刷,画笔)

然后得到windows的重绘消息

然后处理消息对应是:显示(更新)

你上面提供的那些串起来应该能解决你的问题吧.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11274115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存