串口

阅读 / 问答 / 标签

串口通信的OVERLAP模式到底是怎么用的?具体过程是什么?

SetCommMask 设置要监控的事件,WaitCommEvent 等待串口通信事件的发生. SetCommMask 用途:设置串口通信事件  原型:BOOL SetCommMask(HANDLE hFile, //标识通信端口的句柄  DWORD dwEvtMask //能够使能的通信事件  );  参数说明:-hFile:串口句柄  -dwEvtMask:准备监视的串口事件掩码  串口上可能发生的事件如下表所示:  值 事件描述 EV_BREAK A break was detected on input. EV_CTS The CTS (clear-to-send) signal changed state. EV_DSR The DSR(data-set-ready) signal changed state. EV_ERR A line-status error occurred. Line-status errors are CE_FRAME, CE_OVERRUN, and CE_RXPARITY. EV_RING A ring indicator was detected. EV_RLSD The RLSD (receive-line-signal-detect) signal changed state. EV_RXCHAR A character was received and placed in the input buffer. EV_RXFLAG The event character was received and placed in the input buffer. The event character is specified in the device"s DCB structure, which is applied to a serial port by using the SetCommState function. EV_TXEMPTY The last character in the output buffer was sent. 参数含义:  EV_BREAK:收到BREAK信号。  EV_CTS:CTS(clear to send)线路发生变化。  EV_DSR:DST(Data Set Ready)线路发生变化。  EV_ERR:线路状态错误,包括了CE_FRAME / CE_OVERRUN / CE_RXPARITY 3种错误。  EV_RING:检测到振铃信号。  EV_RLSD:CD(Carrier Detect)线路信号发生变化。  EV_RXCHAR:输入缓冲区中已收到数据,即接收到一个字节并放入输入缓冲区。  EV_RXFLAG:使用SetCommState()函数设置的DCB结构中的等待字符已被传入输入缓冲区中。  EV_TXEMPTY:输出缓冲区中的数据已被完全送出。操作举例:SetCommMask(hComm,EV_RXCHAR|EV_TXEMPTY);上面函数执行完毕后将监视串口中有无数据和发送缓冲区中的数据是否全部发送完毕。WaitCommEvent()用途:用来判断用SetCommMask()函数设置的串口通信事件是否已发生。原型:BOOL WaitCommEvent(HANDLE hFile,LPDWORD lpEvtMask,LPOVERLAPPED lpOverlapped);参数说明:-hFile:串口句柄-lpEvtMask:函数执行完后如果检测到串口通信事件的话就将其写入该参数中。-lpOverlapped:异步结构,用来保存异步操作结果。操作举例:OVERLAPPED os;DWORD dwMask,dwTrans,dwError=0,err;memset(&os,0,sizeof(OVERLAPPED));os.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);if(!WaitCommEvent(hComm,&dwMask,&os)){//如果异步操作不能立即完成的话,函数返回FALSE,并且调用GetLastError()函//数分析错误原因后返回ERROR_IO_PENDING,指示异步操作正在后台进行.这种情//况下,在函数返回之前系统设置OVERLAPPED结构中的事件为无信号状态,该函数//等待用SetCommMask()函数设置的串口事件发生,共有9种事件可被监视://EV_BREAK,EV_CTS,EV_DSR,EV_ERR,EV_RING,EV_RLSD,EV_RXCHAR,//EV_RXFLAG,EV_TXEMPTY;当其中一个事件发生或错误发生时,函数将//OVERLAPPED结构中的事件置为有信号状态,并将事件掩码填充到dwMask参数中if(GetLastError()==ERROR_IO_PENDING){/**************************************************************//*在此等待异步操作结果,直到异步操作结束时才返回.实际上此时 *//*WaitCommEvent()函数一直在等待串口监控的事件之一发生,当事件发*//*生时该函数将OVERLAPPED结构中的事件句柄置为有信号状态,此时 *//*GetOverlappedResult()函数发现此事件有信号后马上返回,然后下面*//*的程序马上分析WaitCommEvent()函数等到的事件是被监视的串口事 *//*件中的哪一个,然后执行相应的动作并发出相应消息. *//**************************************************************/GetOverlappedResult(hComm,&os,&dwTrans,true);switch(dwMask){case EV_RXCHAR:PostMessage(Parent,WM_COMM_RXCHAR,0,0);break;case EV_TXEMPTY:PostMessage(Parent,WM_COMM_TXEMPTY,0,0);break;case EV_ERR:switch(dwError){case CE_FRAME:err=0;break;case CE_OVERRUN:err=1;break;case CE_RXPARITY:err=2;break;default:break;}PostMessage(Parent,WM_COMM_ERR,(WPARAM)0,(LPARAM)err);break;case EV_BREAK:PostMessage(Parent,WM_COMM_BREAK,0,0);break;case ...://其他用SetCommMask()函数设置的被监视的串口通信事件。... ...break;default:break;}}-以上简要介绍了大部分的串口通信api函数,笔者所写的串口通信软件用的是事件通知方式,该方式是windows2000下效率较高的一种方式。而且只熟悉这些api函数也还是不够的,该机制下还要牵涉到多线程和消息机制,其中读写串口的动作是由主线程来完成的,比如说操作者按下发送数据的按钮之后,相应函数马上将某特定区域里面的数据发送出去,所以说用api函数写串口发送数据的功能是相对较简单的。收数据的时候就要麻烦一点,在打开串口后首先主线程要设置要监视的串口通信事件,然后将监视线程打开,用来监视主线程设置的这些串口通信事件是否已发生,当其中的某个事件发生后,监视线程马上将该消息发送给主线程,其中监视线程在发送消息之前要确保主线程在收到消息后肯定的知道串口究竟发生了什么样的事件,然后根据不同的事件类型进行处理。大致的主线程和监视线程的大致工作流程:主线程打开(其实就是主窗体打开之后)||V打开串口(设置波特率、校验方式、数据位数、停止位数)||V设置监视线程需要监视的串口通信事件||V打开监视线程||V等待各种事件的发生(比如发送数据单击事件,更改通信参数事件,监视线程发来的消息等)--------------------------------------------------------------------------------监视线程被打开||V串口事件发生否(WaitCommEvent())(无论发生否均进入下面的代码)||V异步操作是否正在后台进行?(if(GetLastError()==ERROR_IO_PENDING))||V在此等待异步操作结果(GetOverlappedResult(hComm,&os,&dwTrans,true))||V处理通信事件,根据事件类型的不同给主窗体发送不同的消息总结起来说SetCommMask()和WaitCommEvent()是要成对使用的。在串口打开的时候SetCommMask,然后在读数据的线程中WaitCommEvent。不过要注意的是,一般不会在WaitCommEvent之后做关于该串口数据的处理(尤其是在数据比较多,处理缓慢的时候——容易丢失数据吧~~),一般会把数据简单的保存下来,再发送消息给一个专门的处理函数进行处理。

URS串口线最长支持多少米

不同URS串口线支持的距离不同,RS232最远25米,而RS485可以传1200米。串口线中直连线和对绞线的区别在于两端管脚连接的方式。比如说,一端的第1个管脚连接的是另一端的第1个管脚。对绞线,将传输线和接收线对绞。比如说,一端的第4个管脚连到了另一端的第5个管脚。将串口线分成这两种类型是因为有两种不同的串口设备。数据终端设备和数据通讯设备,在不同的线上接收信息。因此,采用何种串口线取决于使用的是哪种串口设备。

VBA 串口通讯问题

1 mscomm.vbx通信控件描述 mscomm.vbx通信控件可直接从vb的toolbox中加入窗体form,即可用其进行通信。若toolbox中无此控件,则用tools的custom controls 将mscomm.vbx从windows的system子目录中加入vb的toolbox中。 1.1 通信方式 mscomm.vbx有2种不同的方式来处理和解决各类通信软件的开发和设计问题 1、事件驱动。它与c/c++写windows 软件时的窗口回调函数类似,是1种功能强大的处理问题的方法。在实际工作中,往往要处理许多通信中的相关事件,例如:当线路数据到达本端或cd线和rts信号线状态发生变化时,要求我们使用相应的事件来跟踪和处理,该控件是使用oncomm事件来实现的,它也包括检测和处理通信错误等方面的问题,commevent 值返回最近的通信事件或错误的数字代码。通信控件详细的错误和事件举例有: mscomm-er-break 收到1个break signal mscomm-er-cdto cd 信号超时 …… mscomm-ev-cd cd信号改变 …… 2、查询方式。由程序设计者负责读取commevent的值并处理所发生的错误或事件。通常简单的应用程序设计可采用这种办法。 1.2 通信控件的属性 利用通信控件编制通信程序,关键是准确理解设置通信控件的属性。mscomm.vbx提供了27个关于通信控件方面的属性,例如: commport:设置或返回通信口编号。 settings:设置或返回以字符串形式出现的数据通信格式:波特率、校验、数据位和停 止位。 portopen:设置或返回通信口状态(包括打开和关闭1个通信口) …… 3、 实例 本程序应用背景为dcc95型静电除尘器自动监控系统软件,解决1个pc工控机(主站)与32个单片机(子站)之间的通信问题。主站与子站之间这总线式网络结构,采用rs-485通信标准,以问答方式进行数据通信。由于32个子站与主站发送通信命令(下行命令),主站在接收子站发回的相应回答命令(上行命令)后继续发送下行命令的通信形式。根据系统功能的要求,主站需发送2种类型的命令:(1)同期命令,它由定时器触发引起,每隔ls周期发送1次;(2)非周期性命令,它由操作者按动相应命令按钮引起,非周期性发送。自动监控系统软件安装在主站上,而通信程序作为自动监控系统软件的一部分也安装在主站上。 本文仅列出调试通信程序时进行试验用的基本演示程序清单。试验时,用1台pc机作为主站,另一台pc机模拟32个子站的工作,两台pc机之间采用rs232c串口通信。往主站的通信演示程序窗体(form)中加入1个通信控件、2个定时器控件和1个命令按钮控件,通信控件(mscomm1)用于访问串口,发送和接收数据;periodic定时器控件(periodic)用于控制每秒由主站向各子站发送周期性命令;命令按钮控件(nonperiodic-command)与nonperiodic定时器控件(nonperiodic)用于发送非周期性命令。数据传送采用事件驱动的通信方式,根据不同的发送命令设置rtreshlod属性,从而引起oncomm事件以接收数据。 2.1 窗体各控件初始化程序 设置通信串口工作参数,设置periodic定时器的在断间隔为ls, nonperiodic定时器的中断间隔为0.5s。 sub form-load () mscomm1.commport=2 "选用com2串行口 mscomm1.settings="9600,n8,1" "波特率9600,无奇偶校验位,8位数据位1位停止位 mscomm1.inputlen=0 "input将读取接收缓冲区的全部内容 mscomm1.inbuffersize=1024 "设置接收缓冲区的字节长度 mscomm1.portopen=true "打开通信口 mscomm1.inbuffercount=0 "清除发送缓冲区数据 mscomm1.outbuffercount=0 "清除接收缓冲区数据 periodic.inteval=100 "设置ls定时间隔,使遥测命令每隔ls发送1次 nonperiodic.inteval=500 "设置0.5s定时间隔,查询命令按钮是否处于激活状态以确定是否发送周期性命令 command-pressed=false "命令按钮为未激活状态 during- periodic=false "周期性命令数据传输尚未开始 during- nonperiodic=false "非周期性命令数据传输尚未开始 end sub 2.2 非周期性命令发送程序 根据命令按钮状态及周期性命令数据传输状态,在nonperiodic定时器的中断程序中发送非周期性命令。 sub nonperiodic-command-click () command-pressed=true "命令按钮激活 end sub sub nonperiodic-timer () if during- periodic=true or command-pressed=false then exit sub "若周期性命令数据传输尚未结束或命令按钮处于激活状态,则退出发送非周期性命令程序。 command-pressed=false "命令按钮恢复为未激活状态 call senddata (nonperiodic-command) "发送非周期性命令 mscomm1.rthreshold=r-nonperiodic-byte"发送非周期性命令后,设置rthreshold属性,使主站接收所设定的字节数后引发oncomm事件 end sub 2.3 periodic定时器程序 在periodic定时器的中断程序中发送周期性命令: sub periodic-timer () if during- nonperiodic=true then exit sub "若非周期性命令数据传输尚未结束,则退出发送非周期性命令程序。 during-periodic=true "设置周期性命令数据传输状态为正在进行中 call senddata (periodic-command) "发送周期性命令 mscomm1.rthreshold=r-periodic-byte "发送周期性命令后,主站接收r-remot- edata-byte个字节,可引发oncomm 事件 end sub 2.4 oncomm事件程序 根据rthreshold属性设置值,当接收缓存区内接收到相应字节的字符时,引发oncomm事件,在中断程序中接收数据。 sub mscomm1-oncomm () select case mscomm1.commevent "在此可插入处理各种不同错误或事件的代码 case mscomm-ev-receive receivestring$=mscomm1.input select case mscomm1.rthreshold case r-periodic-byte "周期性命令的应答数据 call disposedata(periodic-command) "处理接收数据 during periodic=false "设置周期性命令数据传输状态为结束 case r-nonperiodic-byte "非周期性命令的应答数据 call disposedata(nonperiodic-command) "处理接收数据 during-nonperiodic=false "设置非周期性命令数据传输状态为结束 end select end select end sub 随着vb版本的不断升级,vb将成为最快速、易用、强劲的应用开发工具,是企业级客户/服务器应用软件开发的首选工具之一。

路由器的串口(serial)和以太口的区别

1,只有DCE---DTE 这里是实验环境,所以必须由DCE提供时钟 clock rate 就是在路由器里设置时钟的语法 只有在s口才可以配置时钟。 具体语法是这样的 clock rate 4800 (单位是位每秒) 可以通过sh controllers s0/0/0来查看是否配置了时钟 2带宽要看接口类型和线路配置,双绞线和光纤都能连到以太口,但光纤的带宽就大多了3,S口用来组建广域网,范围是跨城市的,而以太网多用于局域网组建

serial串口和ethernet端口有什么区别

一个是网口,一个是串口,通信协议不同

一般路由器的串口serial 和console 的区别作用有什么不同

1、serial 口:路由器连接路由器就要用路由器上的Serial端口连接,不过现在的路由器都没有这些口了,都用光口代替了。2、ethernet口:以太网口,现在可以说是百兆口,交换机间连在一起用的。3、console口:如果想对交换机进行配置的话,就用一根配置线插在上面,打开超级终端进行配置,可以说是配置口。4、VTY:VTY是虚拟终端口,使用Telnet时进入的就是对方的VTY口。路由器上有5个VTY口,分别0、1、2、3、4。 简单点讲就是远程连接设备用的。

路由器的串口(serial)和以太口的区别

这是两个不同的概念.1、串口,serial口:最早的路由器对接需要通过Serial端口连接来实现,用专门的串口线。现在的企业级路由器还有串口,不过其实是CONSOLE口,用于对交换机进行配置,却用一根配置线插在上面,在电脑上打开超级终端进行配置,可以说是配置口。渐渐这种形式的接口会被光纤接口淘汰,主要的原因是速度慢,连接需要专门的连接线.2、以太口,即ethernet口,RJ45网络口:以太网口,现在可以说是百兆/千兆口,用于连接交换机间或直接的客户端口.

路由器的串口(serial)和以太口的区别

路由器的串口(serial)和以太口的区别为:性质不同、传输数据不同、传输干扰不同。一、性质不同1、串口(serial):串口(serial)是采用串行通信方式的扩展接口。2、以太口:以太口是以太网中网络数据连接的端口。二、传输数据不同1、串口(serial):串口(serial)的同时发送的数据量相对小,但传输时速度更快。2、以太口:以太口的同时发送的数据量大,但传输时速度就受到了限制。三、传输干扰不同1、串口(serial):串口(serial)串口由于是单条通道,通信线路简单,没有互相干扰,传输不容易出错。2、以太口:以太口由于8位通道之间的互相干扰(串扰),传输容易出错。参考资料来源:百度百科——串口百度百科——以太网接口

新买的一块STM32开发板,用STLINK和串口线连接上之后,在keil下载,结果no target connected,什么问题?

板子没坏的,,你设置KEIL没?

有电接口wifi模块又叫串口wifi模块吗?

WiFi模块常用通讯接口包含:USB、SDIO、SPI(slave)、UART、RGMII、RMII。SKYLABWiFi模块按接口分类大致可以分为四大类,分别是USB接口WiFi模块、以太网接口、串口WiFi模块UART接口、蓝牙二合一的WiFi,常用的通讯接口及WiFi模块型号如下:1)USB接口wifi模块: 从模式USB接口wifi模块:SKW17AE,WG209,WG217,WG233;主模式USB接口wifi模块:SKW77,SKW78,SKW92A,SKW92B,SKW93A,SKW95,SKW97,SKW99,SKW100,SKW103等。2)UART串行接口(串口)wifi模块: 物联网wifi模块:WG219,WG229,WG231,LCS6260;物联网wifi蓝牙二合一模块:WG222,LCS2028,WG235,WG236,WG238。3)SDIO接口wifi模块:wifi蓝牙二合一模块WG225、WG244。4)以太网口(RJ-45接口)wifi模块:百兆以太网口wifi模块:SKW77,SKW92A,SKW92B,SKW93A,SKW95,SKW97,SKW99,SKW100,SKW103;千兆以太网口wifi模块:SKW78。

请问网线可以改装成串口线吗,什么原理呢?

标准RS232串口是 9线,网线仅仅8芯,显然不行!如果 不是 标准RS232串口,应该 是可以的

单片机中如何将DS18b20 测得的温度通过串口发送到上位机VB中

参考 推荐 Proteus 论坛

串口与usb接口之间怎样转换?

数据接收存储技术革新是信号采集处理领域内的一个重要课题。利用这种技术,可以把信号的实时采集和精确处理在时间上分为两个阶段,有利于获得令人更满意的处理结果。在无线数传接收设备中应用数据接收存储方法时,除了要满足数据传输速率和差错控制方面的要求外,还需要考虑如何使设备易于携带、接口简单、使用方便。传统外设接口技术不但数据传输速率较低,独占中断、I/O地址、DMA通道等计算机系统关键资源,容易造成资源冲突问题,而且使用时繁杂的安装配置手续也给终端用户带来了诸多不便。近年来,USB接口技术迅速发展,新型计算机纷纷对其提供支持。USB2.0是USB技术发展的最新成果,利用USB2.0接口技术开发计算机外设,不但可以借用其差错控制机制[1][6]减轻开发人员的负担、获得高速数据传输能力(480Mb/s),而且可以实现便捷的机箱外即插即用特性,方便终端用户的使用。1 无线数传接设备总体构成无线数传接收设备是某靶场测量系统的一个重要组成部分。如图1所示,该设备由遥测接收机利用天线接收经过调制的无线电波信号,解调后形成传输速率为4Mb/s的RS-422电平差分串行数据流。以帧同步字打头的有效数据帧周期性地出现在这些串行数据中。数据转存系统从中提取出有效的数据帧,并在帧同步字后插入利用GPS接收机生成的本地时间信息,用于记录该帧数据被接收到的时间,然后送给主机硬件保存。在无线数传接收设备中,数据转存系统是实现数据接收存储的关键子系统。下面将详细介绍该系统的硬件实现及工作过程。2 数据转存系统基本构成及硬件实现数据转存系统主要由FPGA模块、DSP模块、USB2.0接口芯片构成,各个模块之间的相互关系如图2所示示。图中,4Mb/s的串行数据输入信号SDI已由RS-422差分电平转换为CMOS电平。为突出重点,不太重要的信号连线未在图中绘出。下面分别介绍这几个模块的主要功能。2.1 FPGA模块实现及春功能FPGA模块在Altera公司ACEX系列的EP1K30TI144-2芯片中实现。其中主要的功能子模块有:位同步逻辑、帧同步逻辑、授时时钟和译码逻辑。位同步逻辑主要由数字锁相环构成,用于从串行数据输入信号SDI中恢复出位时钟信号。帧同步逻辑从位同步逻辑的输出信号提取帧同步脉冲。两者为DSP利用其同步串行口接收串行数据作好准备。这样,利用一对差分信号线就可以接收同步串行数据,简化了印制电路板的外部接口。授时时钟在DSP和GSP接收机的协助下生成精度为0.1ms的授时信息。译码逻辑用于实现系统互联。2.2 DSP模块实现及其功能DSP模块是数据转存系统的主控模块,在T1公司16位定点DSP芯片TMS320F206[4]中实现。在DSP的外部数据空间还配置了32KX16的高速SRAM,可以缓存80余帧数据,用于提高系统的差错控制能力。DSP利用同步串行口接收FPGA送来的同步串行数据,利用异步串口接收GPS接收机送来时间信息(用于初始化FPGA授时时钟),利用外部总线接口访问FPGA授时时钟、外部SRAM、ISP1581的片内寄存器。可以看出DSP模块主要用于完成数据帧的接收、重组以及转存调度等任务。 ISP1581芯片是PHILIPS公司推出的高速USB2.0设备控制器,实现了USB2.0/1.1物理层、协议层,完全符合USB2.0规范,即支持高速(480Mb/s)操作,又支持全速(12Mb/s)操作。ISP1581没有内嵌微处理器,但对微处理器操作了灵活的接口。在上电时,通过配置BUS——CONF、DAO、MODE1、MODE0、DA1引脚电平可以适应绝大多数的微处理器接口类型。例如,通过BUS_CONF/DA0引脚,总线配置可以选择普通处理器模块(Generic Phocessor mode)中分割总线模式(Split Bus Mode);在普通处理器模式下,通过MODE0/DA1引脚可以选择读写选通为8051风格或者Motorola风格。在数据转存系统中,ISP1581用于处理主机的高速数据传输。它工作在普通处理器接口模式下,采用8051风格的读写选通信号,由DSP芯片TMS320F206控制。两者在选定工作方式下的信号连线如图3所示,图中未画出的信号引脚可以悬空,供电引脚的连接方式在参考资料[2]第46页有简明描述。在FPGA译码逻辑的作用下,ISP1581的片内寄存器被映射在DSP的片外数据空间中。DSP通过8位地址线选择要访问的寄存器,在读写选通信号的控制下,利用16位数据线与选定的寄存器交换数据。在访问ISP1581单字节寄存器时,数据总线高字节内容无关紧要。ISP1581通过中断引脚INT向DSP报告发生的总线事件,利用D+、D-引脚完成与主机的数据交换。3 数据转存系统的工作过程系统加电后,当FPGA配置过程结束时,如果有串行数据输入,位同步逻辑和帧同步逻辑便启动同步过程。同时,DSP片内FLASH中复位中断服务程序c_int0()[4]被立即执行,在建立好C语言的工作环境下,它会调用主函数main()。在main()中,需要安排好一系列有先后顺序的初始化工作。其中,ISP1581的初始化过程比较复杂,需要考虑设备采用的供电方式(这里为自供电[6]方式)、插接主机和系统上电的先后次序,并需要与USB总线枚举[1][6]过程相结合。在FPGA中的位同步逻辑和帧同步逻辑均进入同步状态,且DSP主控模块配合主机完成初始化任务后,即可启动数据的传输过程。下面介绍一下ISP1581的初始化过程及DSP控制的数据帧的接收机转存流程。3.1 ISP1581的初始化在初始化过程中,首先需要设置影响ISP1581自身工作方式的一些寄存器,然后与主机端USB系统配合进行,应答来自主机端的设备请求。当数据转存系统板作为USB 2.0设备通过连接器连到主机USB根集线器上的一个端口时,主机便可检测到这一连接,接着给该端口加电,检测设备并激活该端口,向USB设备发送复位信号。设备收到这一复位信号后,即进入缺省状态,此后就能够通过缺省通信通道响应主机端送来的设备请求。主机通过描述符请求(GET_DESCRIPTOR)获得设备端的详细信息,通过设置地址请求(SET_ADDRESS)设置设备地址,通过设置配置请求(SET_CONFIGURATION)选定合适的设备配置。在设备成功响应了这些设备请求之后,就可以与主机通信了。 在响应主机请求的过程中,DSP需要配置ISP1581的端点以实现不同类型的传输通道。根据数据传输速率的要求,除了缺省的控制通道外,系统中实现了一个批传输(bulk)[1]类型的输入通道。这样,ISP1581就可以像FIFO一样方便地从数据转存系统向主机传输数据,而且具有差错控制能力,简化了设备端软件设计的复杂性。3.2 数据帧的接收转存过程系统正常工作时,需要与主机端程序相互配合。主要端需要开发者实现的程序包括设备驱动程序和应用程序。在Windows 2000操作系统下,USB设备驱动程序为WDM模型的驱动程序,开发环境DriverStudio为WDM型驱动程序提供了框架结构,使得驱动开发变得非常容易(参见参考文献[5]第八、九、十章)。驱动程序接收应用程序的请求,利用USB总线驱动程序(US-BD)和主机控制器驱动程序(HCD)通过主机控制器安排USB总线事务,设备端则根据这些事务调度相应的数据帧的传输。关于主机端口如何安排总线事务可以查阅参考文献[1]。以下着重介绍设备端数据的调度过程。数据帧的接收转存过程主要由DSP负责,DSP在外部SRAM中建立了一个数据帧的队列,如图4所示。系统主要工作在中断驱动模式下,与同步串行口相关的中断服务程序负责建立队列的尾部,对应于ISP1581中断引脚INT的中断服务程序负责建立队列的头部。当以帧同步字打头的一帧数据以串行位流的形式到来时,FPGA产生的帧同步脉冲可以直接启动DSP同步串行口接收数据,该同步脉冲同时以中断方式通知DSP为一帧数据的接收做好准备。DSP接到通知后,首先检查外部SRAM中是否有足够的空间容纳一帧数据。如果没有空间,则丢弃当前数据帧(根据设计,这种情况是很少见的);如果有空间,则为当前数据帧保留足够的空间。接着在帧起始位置填写帧步字,读取授时时钟的当前值并填写在帧同步字后。这样,一个新的数据帧(图4中数据帧F_N)就建立了,但是并没有加入到队列中,而是要等待来自同步串行口的后继数据嵌入该帧中后再加入到队列中。同步串行口的接收缓冲区在接收到若干字(由初始化时的设置决定)后,会向DSP提出中断请求。在中断服务程序中,DSP读取接收缓冲区中的内容,并将其填入上述新开辟的帧F_N中。在一帧数据接收完毕后,就将该帧添加到队列的尾部,表示该帧数据已经准备好(图4中数据帧F_R),可以通过ISP1581送给主机硬件保存。 DSP在查询到队列中有已经准备好的数据帧存在时,就设置ISP1581的端点索引寄存器(Endpoint Index Register)使其指向初始化时配置的批传输输入端点,然后将队列首帧数据通过ISP1581的数据端口寄存器(Data Port Register)填写在端点缓冲区中。在端点缓冲区被填满后,它就自动生效。在不能填满端点缓冲区的情况下,可以通过设置控制功能寄存器(Control Function Register)的VENDP位[2]强制该端点缓冲区生效。端点缓冲区生效后,在USB总线上下一IN令牌到来时,该端点缓冲区中的数据就通过USB总线传输到主机中。主机成功接收到数据后,会给ISP1581以ACK应答。能够通过INT引脚报告给DSP,DSP就可以继续往端点中填写该帧其余数据。在队列首帧数据被成功转移到主机后,DSP就丢弃首帧数据。如果队列在还有数据帧,则将次首帧作为首帧,继续前述传输过程;如果没有要传输的数据帧,则为队列首帧指针Head_Ptr赋空值(NULL),等待新的数据帧的到来。USB2.0是计算机外设接口技术发展的最新成功,具有广阔的应用前景。本文介绍了PHILIPS公司USB2.0接口芯片ISP1581在无线数据接收设备中的应用。高性能、便携化的无线数据传接收设备。其在靶场实弹试验中受到了用户的好评。PC机的RS-232C串行口是使用最多的接口之一。因此,4串口、8串口等以增加串口数量为目的的ISA总线卡产品大量问世。一般串口应用只是使用了RXD和TXD两条传输线和地线所构成的串口的最基本的应用条件,而本文介绍一个利用PC机的RS-232串口加上若干电路来实现多串口需求的接口电路。 1.PC机串口的RTS和DTR及扩展电路 RTS和DTR是PC机中8250芯片的MODEM控制寄存器的两个输出引角D1和D0位,口地址为COM1的是3FCH,口地址为COM2的是2FCH。我们可以利用对MODEM控制寄存器3FCH或2FCH的写操作对其进行控制。从而利用该操作和扩展电路实现对TXD和RXD进行多线扩展,图1是其扩展电路。 在图1所示的PC机串口扩展电路中,74LS161是二进制计数器,1脚是清0端,2脚是计数端,计数脉冲为负脉冲信号,4051是八选一双向数字/模拟电子开关电路,其中一片用于正向输出,一片用于反向输出。该扩展电路工作原理是通过控制PC机串口的DTR输出的高低电平来形成74LS161的P2脚计数端的负脉冲信号,使161的输出端P14(QA)、P13(QB)、P12(QC)、P11(QD)脚依次在0000到1111十六个状态中变化,本电路仅使用了QA、QB、QC三个输出来形成对4051的ABC控制,最终使得4051(1)的输入端TXD依次通过与TX1~TX8导通而得到输出信号,4051(2)的输出端RXD与RX1~RX8依次导通形成输入信号。由于RXD和TXD的导通是一一对应的,因此串口通信就可以依次通过与多达8个带有三线基本串口的外部设备进行通信传输以实现数据传送。PC机端的电平转换电路是将RS232电平转换为TTL电平,外设端的电平转换电路是将TTL电平转换为RS232电平。由于这种转换有许多电路可以实现,因而,这里不再介绍。 2.电路使用程序 对PC机串口COM1的编程如下: …… … ;对COM1口的波特率等设置; MOV DX,3FCH MOV AL,XXXXXX01B OUT DX,AL;D1生成RTS负脉冲,对74LS161输出端清0 MOV AL,XXXXXX11B; OUT DX,AL ;4051的RX1和TX1导通 CALL COM ;调用通信子程序,与第一个外部设备通信; MOV CX,7 ;设置循环计数器; NEXT:MOV DX ,3FCH MOV AL,XXXXXX10B OUT DX ,AL ;D0位生成DTR的负脉冲,形成161的P2脚计数脉冲 MOV AL,XXXXXX11B OUT DX,AL ;RX2和TX2导通 CALL COM ;调用通信子程序,与第二个外部设备通信 LOOP NEXT ;循环与另外6个外部设备通信 … … ;通信子程序略 3.使用说明 由于该扩展的多路接口在通信时共用一个子程序,因此在与某一路导通时,系统只能与这一路的外部设备进行通信联络。 如果工作现场需要立即和某一路通信,则需要对3FCH的D1位执行两个写操作并在RTS脚形成负脉冲,以对7416I清0后,再连接执行若干次对DTR的两次写操作。例如想对第4路外设通信,则需要执行完成对74LS161清0后,再连续三次对3FCH的D0位进行两个写操作以形成DTR脚的负脉冲,然后即可调用通信子程序。 如需使用PC机的COM2串口,只需将程序中的3F8H~3FDH全部换成2F8H~2FDH即可。 如果使用十六选一双向数字/模拟电子开关电路,可将74LS161的QA、QB、QC、QD四个输出端接至电子开关的四个控制端A、B、C、D,这样就可以达到一个PC机的RS232口与16个带有串口的外设的数据通信。

如何禁止xen服务占用串口

首先确认/dev/ttyS0(既串口com)是否被识别,如果被xen占用,需要修改启动参数,重启系统。然后配置serial port参数,设置完成后即可通过串口通信。步骤:第一步:确认/dev/ttyS0(既串口com)被识别:# dmesg |grep ttyS0serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A00:0c: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A以上输出说明串口被识别。# dmesg|grep ttyS0Xen virtual console successfully installed as ttyS0以上输出则说明串口被xen服务占用,我们需要修改启动参数,指定xen服务使用别的console。安装redhat系统时,如果安装了虚拟机(Xen-enabled host。Xen is a virtual machine monitor (VMM) for x86-compatible computers. Xen can securely execute multiple virtual machines, each running its own OS, on a single physical system with close-to-native performance. ),则xen可能会占用/dev/ttyS0,要想使用串口,我们需要修改启动设置,指定xen使用别的console(或是不使用任何console,我倾向于这种选择)。修改启动设置,指定xen使用的console的方法如下:a)确定系统版本,以便找到需要修改的启动项:# uname -rLinux gic-ftp-lin-001.genotec.ch 2.6.18-8.el5xen从上面的输出,我们可以看出,现在系统版本是2.6.18-8。b)找到相应的启动配置(对应版本2.6.18-8的那项配置),对呀安装了grub的redhat,在/boot/grub/menu.lst中会有如下的配置项:title Red Hat Enterprise Linux Server (2.6.18-8.el5xen) root (hd0,0) kernel /boot/xen.gz-2.6.18-8.el5 module /boot/vmlinuz-2.6.18-8.el5xen ro root=LABEL=/ module /boot/initrd-2.6.18-8.el5xen.imgc)添加“xencons”参数。注意,要紧跟在“root=LABEL=/"后面,如下:title Red Hat Enterprise Linux Server (2.6.18-8.el5xen)root (hd0,0)kernel /boot/xen.gz-2.6.18-8.el5module /boot/vmlinuz-2.6.18-8.el5xen ro root=LABEL=/ xencons=offmodule /boot/initrd-2.6.18-8.el5xen.img说明:在这里,我设置“xencons=off”,既xen不使用任何console,可选的“xencons”参数有:xencons=off #disable console at allxencons=ttyX #attach console to /dev/ttyXxencons=ttySX #attach console to /dev/ttySXxencons=xvcX #attach console to /dev/xvcX现在,/dev/ttyS0是可用的了,我们配置minicom后即可使用串口。第二步:配置minicoma)进入minicom配置界面,输入:#minicom -s你会看到下面的画面:┌—————[configuration]——————┐│ Filenames and paths ││ File transfer protocols ││ Serial port setup ││ Modem and dialing ││ Screen and keyboard ││ Save setup as dfl ││ Save setup as.. ││ Exit │└——————————————————┘b)配置串口连接参数。用上下箭头移动光标,选择:Serial port setup你会看到下面的界面:┌————————————————————————————————————┐│ A - Serial Device : /dev/ttyS0 ││ B - Lockfile Location : /var/lock ││ C - Callin Program : ││ D - Callout Program : ││ E - Bps/Par/Bits : 9600 8N1 ││ F - Hardware Flow Control : Yes ││ G - Software Flow Control : No ││ ││ Change which setting? │└————————————————————————————————————┘这里配置”serial device“为/dev/ttyS0(即com口1);波特率为9600,数据位8位,奇偶校验无,停止位1(既典型的9600 8N1配置);硬件数据流控制(hardware flow control):有;软件数据流控制(software flow control):无。按ESC返回,选择:Save setup as dfl 保持为默认设置,然后退出。c)使用minicom连接串口设备。输入minicom,如果配置成功,会看到消息:Initializing modem 然后会看到下面的画面:Welcome to minicom 2.1OPTIONS: History Buffer, F-key Macros, Search History Buffer, I18nCompiled on Jul 26 2006, 06:38:09.Press CTRL-A Z for help on special keys按回车,就会有login提示符,登录即可。参考资料:[1].Xen console grabbded /dev/ttyS0[2].configure cisco switch with linux COM1 terminal

单片机串口通信原理

近期我做了一个《手把手教你学单片机》视频教程,其中第五课专门讲串口通信原理,你可以去优酷上搜索一下这个视频。

cisco as5300 语音网关 通过串口进入设备,设备名称显示 rom on 1,数字会变,而且也没有相关配置命令

不熟悉 希望这个对你有帮助http://www.net130.com/CMS/Pub/Products/prod_access/01958.htm

keil 串口调试问题 command命令

首先你要先设置串口参数:MODE COM1 9600,0,8,1然后分配设备ASSIGN COM1<SIN>SOUT

用putty部署串口调试环境时,最后弹出命令框时无法输入内容

只需要设置好端口(Serial Line),Linux中默认接上串口后,端口为ttyS0,或者ttyUSB0(对应USB转串口),如果再多接一个,就会显示ttyS1或者ttyUSB1;Window中,普通串口对应的是COM1、COM2,USB对应COM3(需要安装驱动,在设备管理器查看具体是COM几)。接着设置好波特率就行了,只有简单的两步。点击open按钮后,就可以在命令中断输入linux指令,没有任何中间步骤(Window普通USB接上后,还得用adb shell进入android系统),同时也可以查看debug信息,系统会自动打印出来。

Labview中对串口采集到的波形滤波是直接接滤波器吗还是要加些器件?我是用ad转换采集的8位二进制

由于正弦波是单一频率信号。可以采取下述措施: 1、可以在AD输入根据信号频率加一个带通滤波器和一个抗混叠的低通滤波器,或者共用一个低通滤波器。 2、如果滤波器对有用信息造成了不可忽视的衰减,可以根据滤波器的幅频响应特性及信号频率在dsp中做补偿。 3、输出加一个低通滤波器或积分器,消除DA量化时造成的“小台阶”,低通滤波器的截止频率应该高于信号频率,远远低于DA的转换频率。

HoneyWell Xenon 1900串口的,怎么初始化啊?刷说明书上的条码刷了一遍不行呢

只刷了恢复出厂设置条码?这把枪由于可以编程,所以设定时需要先扫描“Remove Custom Defaults条码,然后再扫描“Activate Defaults”条码。第一个条码是清除自定义设置,第二个是恢复出厂默认值的设定。(如果设定手册上有setup/exit条码,则需要先扫描该条码,进入设定状态,再进行设定,最后再扫描退出。)你试试看。

单片机串口接收到16进制的数,怎么将其变成1

要说是几进制,那么肯定是2进制嘛。在硬件层面上看,串行通信的数据肯定是一位一位的传的,一次一般可以传8位。也可以设置是一次传9位,但多出来的一位一般来说是校验位,所以说数据还是8位,即一个字节。具体这一个字节是什么含义,由通信的双方约定,双方要怎么理解一个字节的数据,与通信本身没有关系。你理解成数字也好,理解也字符也好,通信不管这事,通信只负责传送。就像我给你发一封信,装到信封里面就是信,投递员只管把信交给你,不管里面是写的中文还是英文甚至火星文,只要你能理解就好,不管你能不能理解,都与投递员无关。所以,如果你想收到16进制的数据,就要求对方发送16进制的数据。

thead.sleep串口数据丢失是什么原因

丢失数据的原因是数据接收和数据处理再同一个线程中,如果数据处理的时间太长,则来不及接收的数据只能暂存在缓存中。因此,一旦缓存满了,新到的数据就会冲刷掉未来得及接收的数据,从而造成数据的丢失。因此,只是增加缓存的容量不能解决数据丢失的根本问题。

msp430串口仿真器不能在电脑上识别是什么原因啊?电脑上并没有显示发现新硬件。

串口不需要驱动,当然没有提示新硬件。不过430有串口的仿真器吗?

MSP430串口通信时接受、发送中断是怎么产生的?

这是内部逻辑,没必要关心吧?知道中断怎么用就好了

51单片机串口通信定时器初值怎么计算?公式和计算原理是什么?

串口通信方式1和方式3,要用T1来控制波特率。T1,使用定时方式2,其初始值,和晶振频率、波特率、SMOD的关系式如下:T1初值 = 256 - fosc * (SMOD + 1) / (384 * 波特率)--我不明白波特率跟这个定时器的关系。麻烦你详细一点!这个关系,是由硬件决定的,只有搞微电子的,才能弄明白。软件人员,编程的时候,会用这个公式即可,也没有必要弄明白这个。基本上,也没有几个人,能够弄明白集成电路内部,究竟是怎么处理的。其它的很多人,好像是很明白,其实都是在瞎编理由,包括写书的那些人。

cisco mgmt baset能不能作为串口使用

不可以,他在IGP和BGP里协商协议类型,与串口不同~ 。

51单片机LCD1602如何显示串口助手发过来的

LCD1602显示的是字符形式,所以串口助手发过来的数据都需要经过转换,变成字符形式,才能在1602上显示出来。

STC15W404AS AD采集到0-5V电压信号转换为数值信号,经过单片机处理,通过串口发送给电脑,

没有现成的程序哦,但原理上是一样的。1、配置ADC,并采集到电压(寄存器的值)2、根据1的值计算成实际值:V = Vadc*Vrev/adc_bit;其中Vadc是1采集到的寄存器值,Vref是ADC转换的参考值,adc_bit是指ADC位数,例如8位ADC,10位,12位等,此处要注意变量溢出问题,因为有乘法,以前犯过错误。这样V就是实际电压,例如3000mV,4000mV等3、将实际电压通过串口发送,如果要发送的数据只有8位,直接发就可以了,但串口助手只会显示16进制和字符,也就是说,如果你发送的电压V=100(mV),那么串口助手显示的是64,因为十进制100 = 十六进制64,当然,如果串口助手用字符显示,那么就会显示一个,字符(什么字符要自己查,反正不是你想要的结果)。所以,串口发送这一步要经过一些处理,把变量转换一下再发送到串口助手,具体操作,可以参考LCD1602显示数据的做法,把10进制数逐个位发送到串口助手上,例如:要发送V=3000mV,u8_temp = V/1000%10+0x30;发送u8_temp,就可以把千位发送过去,后面的百位,十位,个位,以此类推,发完个位,再发一个回车换行( ,如果没记错的话)好好努力!

用电脑通过串口(RS485)给三菱PLC(FX3U)发指令,怎样在梯形图里写接收串口数据的程序?

直接编好程序下载到PLC。

什么是串口和并口?

问题一:串并口的区别 串口与并口的传输方式不一样,串口传输是一位接一位的,象串起的珠子一样,并口是可以并发数据的,可以同时传输多位。 现在有串行的硬盘SA憨A接口,而并口的是ide接口,目前串口取代了并口。 打印机串口通常指1使用的是9针D形连接器,也称之为RS-232接口,并口采用的是25针D形接头,目前并口的采用的比较多,因为传输速度快。 鼠标的串并口,串口跟打印机是一样的5针的rs-232接口,至于并口恕我孤陋寡闻没听过。 问题二:串口和并口什么意思? 串口的意思是: 串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点 串行接口 是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位的传送,按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。 引用地址:baike.baidu/...bI8kBa 并口的意思是: 通常所说的并行接口一般称为Centronics接口,也称IEEE1284,最早由Centronics Data puter Corporation公司在20世纪60年代中期制定。Centronics公司当初是为点阵行式打印机设计的并行接口,1981年被IBM公司采用,后来成为IBM PC计算机的标准配置。它采用了当时已成为主流的TTL电平,每次单向并行传输1字节(8-bit)数据,速度高于当时的串行接口(每次只能传输1bit),获得广泛应用,成为打印机的接口标准。1991年,Lexmark、 IBM、Texas instruments等公司为扩大其应用范围而与其他接口竞争,改进了Centronics接口,使它实现更高速的双向通信,以便能连接磁盘机、磁带机、光盘机、网络设备等计算机外部设备(简称外设),最终形成了IEEE1284-1994标准,全称为Standard Signaling Method for a Bi-directional Parallel Peripheral Interface for Personal puters,数据率从10KB/s提高到可达2MB/s(16Mbit/s)。但事实上这种双向并行通信并没有获得广泛使用,并行接口仍主要用于打印机和绘图仪,其他方面只有的少量设备应用,这种接口一般被称为打印接口或LPT接口 。 引用地址:baike.baidu/...H-DKz_ 问题三:什么是串口,什么是并口? 串行接口 串行接口,简称串口,也就是接口,是采用串行通信协议的扩展接口。串口的出现是在1980年前后,数据传输率是115处bps~230kbps,串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备,目前部分新主板已开始取消该接口。 并行接口 并行接口,简称并口,也就是LPT接口,是采用并行通信协议的扩展接口。并口的数据传输率比串口快8倍,标准并口的数据传输率为1Mbps,一般用来连接打印机、扫描仪等。所以并口又被称为打印口。 另外,串口和并口都能通过直接电缆连接的方式实现双机互连,在此方式下数据只能低速传输。多年来PC的串口与并口的功能和结构并没有什么变化。在使用串并口时,原则上每一个外设必须插在一个接口上,如果所有的接口均被用上了就只能通过添加插卡来追加接口。串、并口不仅速度有限,而且在使用上很不方便,例如不支持热插拔等。随着USB接口的普及,目前都已经很少使用了,而且随着BTX规范的推广,是必然会被淘汰的。 问题四:什么叫电脑串口并口? 串口 就是硬盘数据线 窄一的那一种((新技术) 并口 就是线很宽的那种 (老技术) 问题五:串口与并口的区别主要是什么? 串行接口Serial Interface是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。 串行接口 一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。 并行接口,指采用并行传输方式来传输数据的接口标准。从最简单的一个并行数据寄存器或专用接口集成电路芯片如8255、6820等,一直至较复杂的SCSI或IDE并行接口,种类有数十种。一个并行接口的接口特性可以从两个方面加以描述:1、以并行方式传输的数据通道的宽度,也称接口传输的位数;2、用于协调并行数据传输的额外接口控制线或称交互信号的特性。 数据的宽度可以从1~128位或者更宽,最常用的是8位,可通过接口一次传送8个数据位。在计算机领域最常用的并行接口是通常所说的LPT接口。 问题六:并口线和串口线的区别和作用是什么 串口 串行通信接口,数据 1位1位 传输 如 RS232 RS485 RS422 USB 并口 并行通信接口,数据 8位8位 传输(或者8的倍数) LPT1 问题七:什么叫并行接口,什么叫串行接口?哪些输入输出设备分别属于什么? 并行通信是弗一个字符的各数位用几条线同时进行传输,传输速度快,信息率高。但它比串行通信所用的电缆多,故常用在传输距离较短(几米至几十米)、数据传输率较高的场合。 实现并行通信的接口就是并行接口。 并行接口可设计为只作为输入/输出接口,也可设计为既作为输入又作为输出的接口。它可以用两种方法实现,一种是利用同一个接口中的两个通路,一个作输入通路,一个作输出通路;另一种使用同一个双向通路,既作为输入又作为输出。 连接设备接口有PS/2,PATA,LPT等 串行通信是指数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信, 连接设备接口有SATA,USB等 问题八:串口和并口是什么意思?有什么区别? 近两年,大家听得最多的一个词可能就是串行传输了。从技术发展的情况来看,串行传输方式大有彻底取代并行传输方式的势头,USB取代 IEEE 1284,SATA取代PATA,PCI Express取代PCI…… 从原理来看,并行传输方式其实优于串行传输方式。通俗地讲,并行传输的通路犹如一条 多车道的宽阔大道,而串行传输则是仅能允许一辆汽车通过的乡间公路。以古老而又典型的标准并行口(Standard Parallel Port)和串行口(俗称口)为例,并行接口的位宽为8,数据传输率高;而串行接口只有1位,数据传输速度低。在串行口传送1位的时间内,并行口可以传送一个字节。当并行口完成单词“advanced”的传送任务时,串行口中仅传送了这个单词的首字母“a”。 图1:H6A-2-1.TIF 并行接口速度是串行接口的8倍 那么,现在的串行传输方式为何会更胜一筹呢? 一、并行传输技术遭遇发展困境 电脑中的总线和接口是主机与外部设备间传送数据的“大动脉”,随着处理器速度的节节攀升,总线和接口的数据传输速度也需要逐步提高,否则就会成为电脑发展的瓶颈。 图2 PC总线的发展 我们先来看看总线的情况。1981年第一台PC中以ISA总线为标志的开放式体系结构,使用了ISA总线,数据总线为8位,工作频率为8.33MHz,这在当时却已经算作“先进技术(Advanced Technology)”了,所以ISA总线还有另一个名字“AT总线”。到了286时,ISA的位宽提高到了16位,为了保持与8位的ISA兼容,工作频率仍为8.33MHz。ISA总线虽然只有16MBps的数据传输率,但直到386时代,都一直是主板与外部设备间最快的数据通道。 到了486时代,同时出现了PCI和VESA两种更快的总线标准,它们具有相同的位宽(32位),但PCI总线能够与处理器异步运行,当处理器的频率增加时,PCI总线频率仍然能够保持不变,可以选择25MHz、30MHz和33MHz三种频率。而VESA总线与处理器同步工作,因而随着处理器频率的提高,VESA总线类型的外围设备工作频率也得随着提高,适应能力较差,因此很快失去了竞争力。PCI总线标准成为Pentium时代PC总线的王者,硬盘控制器、声卡到网卡,全部使用PCI插槽。而显卡方面对数据传输速度要求更高,出现了专用的AGP, 并行数据传输技术向来是提高数据传输率的重要手段,但是,进一步发展却遇到了障碍。首先,由于并行传送方式的前提是用同一时序传播信号,用同一时序接收信号,而过分提升时钟频率将难以让数据传送的时序与时钟合拍,布线长度稍有差异,数据就会以与时钟不同的时序送达,另外,提升时钟频率还容易引起信号线间的相互干扰,导致传输错误。因此,并行方式难以实现高速化。从制造成本的角度来说,增加位宽无疑会导致主板和扩充板上的布线数目随之增加,成本随之攀升。 在外部接口方面,我们知道IEEE 1284并行口的速率可达30 0kBps,传输图形数据时采用压缩技术可以提高到2MBps,而RS-232C标准串行口的数据传输率通常只有20kbps,并行口的数据传输率无疑要胜出一筹。因此十多年来,并行口一直是打印机首选的连接方式。对于仅传输文本的针式打印机来说,......>> 问题九:计算机中所说的串口并口是什么意思? 串行接口 串行接口,简称串口,也就是接口,是采用串行通信协议的扩展接口。串口的出现是在1980年前后,数据传输率是115kbps~230kbps,串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备,目前部分新主板已开始取消该接口。 并行接口 并行接口,简称并口,也就是LPT接口,是采用并行通信协议的扩展接口。并口的数据传输率比串口快8倍,标准并口的数据传输率为1Mbps,一般用来连接打印机、扫描仪等。所以并口又被称为打印口。 另外,串口和并口都能通过直接电缆连接的方式实现双机互连,在此方式下数据只能低速传输。多年来PC的串口与并口的功能和结构并没有什么变化。在使用串并口时,原则上每一个外设必须插在一个接口上,如果所有的接口均被用上了就只能通过添加插卡来追加接口。串、并口不仅速度有限,而且在使用上很不方便,例如不支持热插拔等。随着USB接口的普及,目前都已经很少使用了,而且随着BTX规范的推广,是必然会被淘汰的。 计算机上有串口和并口的地方应该有:硬盘、主板、还有打印机等。串口一般用于接一些特殊的外接设备。比如通讯方面的设备。并口通常用于连接打印设备。串口比较小,有突出的针露在外面。并口一般比串口要大,通常是红色的,有两排小孔 串口形容一下就是 一条车道,而并口就是有8个车道 同一时刻能传送8位(一个字节)数据。 但是并不是并口快,由于8位通道之间的互相干扰。传输受速度就受到了限制。而且当传输出错时,要同时重新传8个位的数据。串口没有干扰,传输出错后重发一位就可以了。所以快比并口快。串口硬盘就是这样被人们重视的

当有串口连接时候应该如何设置FieldPoint的看门狗?

椋ü齌CP/IP的方式我可以设置和使用FieldPoint的看门狗定时器。不过当我有串口连接的时候,看门狗的定时器一直溢出即使我的线缆一直没有断开过,这是什么原因?解答:当通过串口线缆和FieldPoint 网络模块连接时,数据必须在看门狗定时器溢出之前从FieldPoint读出或者写入,一旦数据帧完成了读或写,看门狗定时器就会自动重启,定时器重新开计数。 以下是如何使用串口通信来设置FieldPoint网络模块设置看门狗的步骤。通过TCP/IP网线连接到FieldPoint.设置FieldPoint的静态地址和子网掩码并保存改变。注意不要勾选工厂配置。3. 为你的FieldPoint创建配置文件(IAK文件)。右击远程系统下的FieldPoint选择查找设备。4. 使能Bank的看门狗功能,指定其超时时间,并保存更改。5. 使能设备的看门狗功能,并保存更改。6. 使能并配置每个通道的看门狗,同时保存更改。7. 断开Ethernet线缆,同时用串口线连接计算机和FieldPoint。8 .通过串口连接你的FieldPoint,右击我的系统下面的设备和接口选择新建。9. 选择FieldPoint串口10. 选择完成. 11. 选择确定12. .在计算机上保存FieldPoint IAK文件,右击数据邻居的FieldPoint项目,选择保存13. 关闭MAX。注意:如果你不关闭MAX,串口将会被占用,LabVIEW的VI将无法使用串口去访问FieldPoint14.打开你的工程并导入FieldPoint配置文件。右击工程,选择导入-》FieldPoint配置15. 部署设置到FieldPoint网路模块。右击FieldPointBank ,选择部署。 16. 如果有必要,在项目管理器的窗口内更改看门狗的功能和设定值,而不用通过MAX。右击FieldPoint Bank,选择配置看门狗。17. 单击不同的值来改变他们的

先锋(pioneer) dvr-221chv 24速 串口 dvd刻录机 怎样安装

你好!很高兴解答你的提问!请你阅读如下提示,排除烦恼。谢谢!1,先锋DVR-221CHV是台式电脑刻录型光驱,只能装进台式电脑标准型机箱的光驱位置。2,安装光驱时,应跟电脑城装机店铺伙计索取4颗紧固螺丝。找到光驱左侧与右侧的8个螺丝孔。3,打开台式电脑机箱,找到安装光驱的支架(间隔最宽的平行铁架),找到四个紧固螺丝孔位。4,卸掉机箱光驱位的前塑料档板,跟塑料挡板后的半固定屏蔽网铁板,象拧麻花样拧断连接处。5,从光驱包装盒里取出光驱,顺着台式机箱光驱位的隔断,平推进机箱,留一手在机箱内接应。6,防止光驱跌落损伤。一手托举住光驱,一手拿来螺丝刀与4颗螺丝,光驱两侧与机箱支架对眼。7,依次拧紧螺丝,牢牢把光驱固定在机箱光驱支架上。从光驱包装盒取出SATA线,一端插光驱。8,一端插主板SATA2,注意插头都是认面的,插不进则翻一面再插,别蛮力插。找到台式电脑的9,机箱电源,找到一空余的SATA电源线,黑色最扁平插头,内部是空心L形的。插光驱电源座。10,以上9点得确保台式电脑机箱后的电源线是拔走的,否则带电操作危险,会烧坏机箱内东西。11,做好以上10点,关上机箱,插上机箱电源线。电脑开机进系统,会发现新光驱,自动装驱动。12,电脑提示完成,须重启电脑时就重启电脑,电脑光驱就能用啦。读DVD盘时,系统里装软件。13,就是快播或暴风影音这样的任一款万能播放器。若想刻录光盘,还要装NeroBurningROM。14,电脑城光盘耗材店购得正品优质的CD-R或DVD-R或DVD+R名牌刻录盘,放进光驱才能刻录。15,看DVD影碟借助万能播放器播放。刻录DVD或CD要借助NeroBurningROM软件。这是后话。16,如果光驱已被正常照1-9条办法由装机伙计装到位,系统提示要光驱驱动,应重装电脑系统。

无线串口通信和一般的RS232这种有线串口通信在原理和程序上有区别吗

有带串口 的 zigbee 模块距离应该可以达到吧

请问电脑的串口,并口,和USB接口哪个最快

一楼的到底懂不懂啊?不懂就不要害人家楼主!

在ZIGBEE中如何通过串口来设置节点的逻辑类型

需要帮你做设计吗

请问怎么在zigbee协议栈中调用延时函数,还有就是怎么用zigbee协议栈的串口发送函数发送16进制数。

延时函数是uint8 osal_start_timerEx( uint8 taskID, uint16 event_id, uint16 timeout_value )串口调用uint16 HalUARTWrite(uint8 port, uint8 *buf, uint16 len)写

lvds接口是并口还是串口

LVDS接口是LCDPanel通用的接口标准,大多用在7寸以上尺寸的显示屏上。lvds接口是串行接口。LVDS发送器将驱动板主控芯片输出的TTL电平并行RGB数据信号和控制信号转换成低电压串行LVDS信号,然后通过驱动板与液晶面板之间的柔性电缆(排线)将信号传送到液晶面板侧的LVDS接收器,LVDS接收器再将串行信号转换为TTL电平的并行信号,送往液晶屏时序控制与行列驱动电路。

lvds接口是并口还是串口

LVDS接口是LCD Panel通用的接口标准,大多用在7寸以上尺寸的显示屏上。lvds接口是串行接口。LVDS发送器将驱动板主控芯片输出的TTL电平并行RGB数据信号和控制信号转换成低电压 串行 LVDS信号,然后通过驱动板与液晶面板之间的柔性电缆(排线)将信号传送到液晶面板侧的LVDS接收器,LVDS接收器再将 串行 信号转换为TTL电平的并行信号,送往液晶屏时序控制与行列驱动电路。

求助~主板并口英文缩写和主板串口英文缩写????(在线等)

主板并口英文缩写:LPT接口和主板串口英文缩写COM口,SATA口CPU多媒体指令集合分(MMX)和(SSE)等。主板芯片主要厂商是(INTEL)(VIA)(SIS)。硬盘的厂商(迈拓)(希捷)(西部数据)。(有源)音箱不需要机器上接声卡即可使用。声卡上的游戏杆借口英文缩写(不知道)。

串口调试助手英文版

accessport 可以吧

如何使用.net2003 C#语言操作MSCOMM进行串口数据访问

微软的网站上有一个开放源码的程序块,CommBase,它是专门针对串口的编写的,很好用。另外,在.NET 2.0以后提供了一个类SerialPort类,它是针对串口编写的类。但是没有CommBase好用。

紧急求助一个串口接收数据,写入文本并画图的MATLAB程序,求大神帮忙

串口读取/读取数据一般分为三步:打开串口,设置串口(波特率,串口数据传送方式等),然后是串口读取数据或者发送数据void OpenComm(){ hCom=CreateFile("COM3",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL); }void SetComm(){SetupComm(hCom,1024,1024);DCB dcb;dcb.BaudRate=115200; dcb.fParity=NOPARITY;dcb.ByteSize=8;dcb.StopBits=ONESTOPBIT;GetCommState(hCom,&dcb);if(!GetCommState(hCom,&dcb)){std::cerr<<"串口被占用"<<std::endl;return;}if(!SetCommMask(hCom,EV_RXCHAR|EV_TXEMPTY)){std::cerr<<"掩码设置失败"<<std::endl;}}void SendMessageOut(const BYTE snd[],int len){DWORD factdata=100;DWORD res=0;wOverLapped.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL); //创建事件BOOL tempflag = WriteFile(hCom,snd,len,&factdata,&wOverLapped);//在数据缓冲Ipbuffer不知道是否有问题if(tempflag!=0){std::cerr<<"等待信号"<<std::endl;res=WaitForSingleObject(wOverLapped.hEvent,5000);WriteFile(hCom,snd,len,&factdata,&wOverLapped);}if(res!=WAIT_OBJECT_0)std::cout<<"数据发送失败"<<std::endl;}这是发送数据的设置 接受数据很类似 你可以根据自己情况修改,然后你就可以根据MATLAB的数据读取以及数据传送方式来写你的程序了

C++ API串口通信调试错误

#include <iostream>#include <windows.h>using namespace std;HANDLE hMutex;DWORD WINAPI Read(LPVOID lpParamter){ //打开端口 HANDLE hCom = CreateFileA("com7", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0); //设置超时 COMMTIMEOUTS timeouts; GetCommTimeouts(hCom, &timeouts); timeouts.ReadIntervalTimeout = 0; timeouts.ReadTotalTimeoutMultiplier = 0; timeouts.ReadTotalTimeoutConstant = 1; timeouts.WriteTotalTimeoutMultiplier = 0; timeouts.WriteTotalTimeoutConstant = 0; if (!SetCommTimeouts(hCom, &timeouts)) { cout<<"超时设置失败!重新"; CloseHandle(hCom); return 0; } //取得并设置端口状态 DCB dcb; GetCommState(hCom, &dcb); dcb.DCBlength = sizeof(DCB); dcb.BaudRate = 9600; dcb.Parity = 0; dcb.ByteSize = 8; dcb.StopBits = ONESTOPBIT;

读串口数据是遇到00后面的就不读了 怎么解决?

编译器问题

高手指点阿串口通信数据提取

最终数据是什么格式的?整型的就自己算如果是ASCII的,将每个字节 + "0"

用C/C++写一个小程序读取串口接收到的数据

你太幸运了,刚好我有一个,你在vc++6.0下测试一下。/* serrecv.c *//* Receives and saves a file over a serial port *//* Last modified: Septemeber 21, 2005 *//* */#include <windows.h>#include <stdio.h>#include <stdlib.h>/* Function to print out usage information */void usage(void);/* Function to set up the serial port settings with the specified baud rate, no parity, and one stop bit */void set_up_serial_port(HANDLE h, long baud);/* Function to receive and save file from serial port */void get_file_from_serial_port(HANDLE h, char *file_name, unsigned long file_length);int main(int argc, char **argv){ HANDLE serial_port; /* Handle to the serial port */ long baud_rate = 9600; /* Baud rate */ char port_name[] = "COM1:"; /* Name of serial port */ unsigned long file_size; /* Size of file to receive in bytes */ unsigned long bytes_received; /* Bytes received from serial port */ unsigned long file_name_size; /* Size of file name in bytes */ char file_name[256]; /* Name of file to receive */ /* Check command line */ if (argc == 3) { /* Read in baud rate */ if (argv[1][1] != "b" || sscanf(argv[2], "%ld", &baud_rate) != 1) { usage(); exit(0); } } else if (argc != 1) { usage(); exit(0); } /* Open up a handle to the serial port */ serial_port = CreateFile(port_name, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); /* Make sure port was opened */ if (serial_port == INVALID_HANDLE_VALUE) { fprintf(stderr, "Error opening port "); CloseHandle(serial_port); exit(0); } /* Set up the serial port */ set_up_serial_port(serial_port, baud_rate); /* Receive file name size from serial port */ ReadFile(serial_port, (void *)&file_name_size, sizeof(unsigned long), &bytes_received, NULL); if (bytes_received != sizeof(unsigned long)) { fprintf(stderr, "Error getting file name size. "); CloseHandle(serial_port); exit(0); } /* Receive file name from serial port */ ReadFile(serial_port, (void *)file_name, file_name_size, &bytes_received, NULL); if (bytes_received != file_name_size) { fprintf(stderr, "Error retrieving file name. "); CloseHandle(serial_port); exit(0); } /* Append NULL terminator to end of string */ file_name[bytes_received] = ""; /* Receive file size from serial port */ ReadFile(serial_port, (void *)&file_size, sizeof(unsigned long), &bytes_received, NULL); if (bytes_received != sizeof(unsigned long)) { fprintf(stderr, "Error getting file size. "); CloseHandle(serial_port); exit(0); } /* Get the file from the serial port */ get_file_from_serial_port(serial_port, file_name, file_size); /* Print out success information */ printf(" %lu bytes successfully received and saved as %s ", file_size, file_name); /* Close handle */ CloseHandle(serial_port); return 0;}void usage(void){ fprintf(stderr, "Usage: "); fprintf(stderr, " serrecv [-b baud rate] "); fprintf(stderr, " Default baud rate is 9600 "); fprintf(stderr, "tSupported baud rates: 1200, 2400, 4800, 9600, 14400, 19200 "); return;}void set_up_serial_port(HANDLE h, long baud){ DCB properties; /* Properties of serial port */ /* Get the properties */ GetCommState(h, &properties); /* Set the baud rate */ switch(baud) { case 1200: properties.BaudRate = CBR_1200; break; case 2400: properties.BaudRate = CBR_2400; break; case 4800: properties.BaudRate = CBR_4800; break; case 9600: properties.BaudRate = CBR_9600; break; case 14400: properties.BaudRate = CBR_14400; break; case 19200: properties.BaudRate = CBR_19200; break; case 38400: properties.BaudRate = CBR_38400; break; default: fprintf(stderr, "Invalid baud rate: %ld ", baud); usage(); exit(0); break; } /* Set the other properties */ properties.Parity = NOPARITY; properties.ByteSize = 8; properties.StopBits = ONESTOPBIT; SetCommState(h, &properties); return;}void get_file_from_serial_port(HANDLE h, char *file_name, unsigned long file_length){ FILE *data_file; /* File to create */ unsigned long bytes_left = file_length; /* Bytes left to receive */ unsigned long bytes_received_total = 0; /* Total bytes received */ unsigned long bytes_to_receive; /* Number of bytes to receive */ unsigned long bytes_received; /* Number of bytes receive */ char buffer[200]; /* Buffer to store data */ /* Open the file */ data_file = fopen(file_name, "wb"); /* Quit if file couldn"t be opened */ if (data_file == NULL) { fprintf(stderr, "Could not create file %s ", file_name); CloseHandle(h); exit(0); } while (1) { /* Determine how many bytes to read */ if (bytes_left == 0) { break; } else if (bytes_left < 200) { bytes_to_receive = bytes_left; } else { bytes_to_receive = 200; } /* Receive data over serial cable */ ReadFile(h, (void *)buffer, bytes_to_receive, &bytes_received, NULL); if (bytes_received != bytes_to_receive) { fprintf(stderr, "Error reading file. "); CloseHandle(h); exit(0); } /* Save buffer to file */ fwrite((void *)buffer, 1, bytes_received, data_file); /* Decrement number of bytes left */ bytes_left -= bytes_received; /* Increment number of bytes received */ bytes_received_total += bytes_received; /* Print out progress */ printf(" %5lu bytes received.", bytes_received_total); } fclose(data_file); return;}

串口的概念

串口叫做串行接口,现在的电脑一般有两个串行口:COM1和、COM2。你到计算机后面能看到9针D形接口就是了,有时我们也称它为RS-232接口。现在有很多手机数据线或者物流接收器都采用COM口与计算机相连。 Universal Serial Bus(通用串行总线)简称USB,是目前电脑上应用较广泛的接口规范,USB接口是电脑主板上的一种四针接口,其中中间两个针传输数据,两边两个针给外设供电。USB接口速度快、连接简单、不需要外接电源,同时对外设有良好的兼容性,最多可连接127台外设。USB有两个规范,即USB1.1和USB2.0。 USB接口可以连接音箱、调制解调器(Modem)、数码相机、显示器、游戏杆、扫描仪、鼠标、键盘等外围设备,使得这些外设可以进行热插拔,即不关机插拔USB设备。 接口类型: RJ-45接口是以太网最为常用的接口,RJ45是一个常用名称,指的是由IEC (60)603-7标准化,使用由国际性的接插件标准定义的8个位置(8针)的模块化插孔或者插头。 RS-232接口(又称 EIA RS-232-C)是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标 准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间 串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的 DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信 号的电平加以规定。 并口(LPT口) 并口(Parallel Port/Interface)是电脑早期使用的25针接口,俗称打印口。并口采用25针的双排插口,除最普遍的应用于打印机以外,还可用于连接扫描仪、ZIP驱动器甚至外置网卡、磁带机以及某些扩展硬盘等设备。 USB(Universal Serial Bus)通用串行总线是由Intel、Microsoft、Compaq、IBM、NEC、Northern Telcom等几家大厂商发起的新型外设接口标准。USB传输速度12Mbps,最新USB2.0可达480Mbps;电缆最大长度5米,USB电缆有4条线,2条信号线,2条电源线,可提供5伏特电源,USB电缆还分屏蔽和非屏蔽两种,屏蔽电缆传输速度可达12Mbps,价格较贵,非屏蔽电缆速度为1.5Mbps,但价格便宜;USB通过串联方式最多可串接127个设备;支持即插即用和热插拔。 串口与并口的区别: 串口形容一下就是 一条车道,而并口就是有8个车道同一时刻能传送8位(一个字节)数据。 但是并不是并口快,由于8位通道之间的互相干扰。传输受速度就受到了限制。而且当传输出错时,要同时重新传8个位的数据。串口没有干扰,传输出错后重发一位就可以了。所以快比并口快。串口硬盘就是这样被人们重视的。

关于串口通讯

串口是一种非常通用的设备通信的协议(不要与通用串行总线Universal Serial Bus(USB)混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:比特率在数字信道中,比特率是数字信号的传输速率,它用单位时间内传输的二进制代码的有效位(bit)数来表示,其单位为每秒比特数bit/s(bps)、每秒千比特数(Kbps)或每秒兆比特数(Mbps)来表示(此处K和M分别为1000和1000000,而不是涉及计算机存储器容量时的1024和1048576)。波特率波特率指数据信号对载波的调制速率,它用单位时间内载波调制状态改变次数来表示,其单位为波特(Baud)。 波特率与比特率的关系为:比特率=波特率X单个调制状态对应的二进制位数。显然,两相调制(单个调制状态对应1个二进制位)的比特率等于波特率;四相调制(单个调制状态对应2个二进制位)的比特率为波特率的两倍;八相调制(单个调制状态对应3个二进制位)的比特率为波特率的三倍;依次类推。RS232是要用在近距离传输上最大距离为30MRS485用在长距离传输最大距离1200M波特率:衡量符号传输速率的参数。它表示每秒钟传送的符号的个数。例如300波特表示每秒钟发送300个符号,时钟周期时,我们就是指波特率,例如协议需要4800波特率,那么时钟是4800Hz,串口通信最重要的参数是波特率、数据位、停止位和奇偶校验,通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、6、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不是真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

VC串口通信问题

还是 看书 好Visual C++_Turbo C串口通信编程实践有 pdf 电子文档祝你顺利

用C/C++写一个小程序读取串口接收到的数据

有的很多种

【MFC中 串口通信 怎么检测是否连接成功】

你的代码只是打开串口,只要该串口可用,就可以成功打开,就算该串口不链接任何设备.

如何用网页实现简单的串口 发送 功能

正在期待中 希望知道的说下 顶个

关于串口通讯

串口是一种非常通用的设备通信的协议(不要与通用串行总线Universal Serial Bus(USB)混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:比特率在数字信道中,比特率是数字信号的传输速率,它用单位时间内传输的二进制代码的有效位(bit)数来表示,其单位为每秒比特数bit/s(bps)、每秒千比特数(Kbps)或每秒兆比特数(Mbps)来表示(此处K和M分别为1000和1000000,而不是涉及计算机存储器容量时的1024和1048576)。波特率波特率指数据信号对载波的调制速率,它用单位时间内载波调制状态改变次数来表示,其单位为波特(Baud)。 波特率与比特率的关系为:比特率=波特率X单个调制状态对应的二进制位数。显然,两相调制(单个调制状态对应1个二进制位)的比特率等于波特率;四相调制(单个调制状态对应2个二进制位)的比特率为波特率的两倍;八相调制(单个调制状态对应3个二进制位)的比特率为波特率的三倍;依次类推。RS232是要用在近距离传输上最大距离为30MRS485用在长距离传输最大距离1200M波特率:衡量符号传输速率的参数。它表示每秒钟传送的符号的个数。例如300波特表示每秒钟发送300个符号,时钟周期时,我们就是指波特率,例如协议需要4800波特率,那么时钟是4800Hz,串口通信最重要的参数是波特率、数据位、停止位和奇偶校验,通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、6、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不是真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

求助关于ReadFile 串口卡死的问题

增加以下超时设置: 进行超时处理试下应是可以的,我的MFC工程增加了就可以了,要不出错以后就会卡死,正常是不会卡。具体的参数设置数值也可以去BAIDU一下。hCom=CreateFile(m_Com,GENERIC_READ|GENERIC_WRITE, //允许读和写0,//独占方式NULL,OPEN_EXISTING, //打开而不是创建0,//同步方式NULL);SetupComm(hCom,100,100);//输入缓冲区和输出缓冲区的大小COMMTIMEOUTS TimeOuts;//设定读超时TimeOuts.ReadIntervalTimeout=MAXDWORD;TimeOuts.ReadTotalTimeoutMultiplier=5; //读取每字符间的超时TimeOuts.ReadTotalTimeoutConstant=100; //一次读取串口数据的固定超时//设定写超时TimeOuts.WriteTotalTimeoutMultiplier=10;TimeOuts.WriteTotalTimeoutConstant=200;SetCommTimeouts(hCom,&TimeOuts); //设置超时// EVENPARITY 偶校验// MARKPARITY 标记校验,所发信息帧第9位恒为1// NOPARITY 无校验// ODDPARITY 奇校验// ONESTOPBIT 1停止位// ONE5STOPBITS 1.5停止位// TWOSTOPBITS 2停止位DCB dcb;GetCommState(hCom,&dcb);//设置串口设置dcb.BaudRate=9600;//波特率dcb.fBinary=TRUE;//指定是否允许二进制模式。Win32 API不支持非二进制模式传输,应设置为truedcb.fParity=TRUE;//指定奇偶校验是否允许,在为true时具体采用何种校验看Parity 设置dcb.ByteSize=8; //每个字节有8位dcb.Parity=NOPARITY;//dcb.StopBits=ONESTOPBIT;//1个停止位PurgeComm(hCom, PURGE_TXCLEAR|PURGE_RXCLEAR); //清除缓冲区

用API函数编写的串口通信,端口打开了,WriteFile总是反回调用失败类型为0;以下是程序,我是新手,谢谢帮

我遇到同样的问题,我用GetLastError()也是返回0,但是写入字节为0.请问你现在解决了吗?如果解决了可以告诉我怎么解决的?

为什么串口通信中发送一次数据接收到两次

关注这个问题

delphi 7 中我用了spcomm 控件,但是只能打开本机器的串口(com1)mox卡扩展出的串口都无效。

你先看你设备管理器里对应的那个口是com几,然后设置spcomm的commname

使用串口,电脑经常蓝屏是怎么回事

使用串口,电脑经常蓝屏的解决方法1、当电脑出现蓝屏时,最简单的方法就是使用“最后一次正确的配置”来初步修复一下电脑。2、当电脑首次出现蓝屏时,应当在重启电脑时,按键盘快捷键“F8”进入系统启动菜单中,然后选择“最后一次正确的配置”来启动电脑,据此来修复一下电脑,看问题能否得到有效解决。3、另一个有效的解决方法是启用电脑蓝屏修复程序。打开“运行”对话框,输入命令“Regedit”进入注册表程序。4、依次展开“HKEY_LOCAL_MACHINE”→“SYSTEM”→“CurrentControlSet”→“Control”→“SessionManager”,在右侧找到BootExecute项,双击将其值设置为“autocheckautochk*”。经过这样设置以后,如果电脑出现蓝屏,将会在电脑重启后自动运行自检程序,试图对系统中存在的错误进行修复。

使用串口,电脑经常蓝屏是怎么回事

正常。涉及到底层硬件接口的驱动程序往往会造成系统蓝屏,这个很正常。建议更换一下操作系统吧,win7好像好一些,xp蓝屏率比较高。

串口发送数据单片机 ,RELAY不动作,也发送不出去SUBF

RELAY=SBUF,一个8位二进制数是不能赋值给1个位的吧。还有,你应该是控制flag控制开合而不是RI,flag也缺位定义

stm32串口波特率最大为多少

最高115200

busybox里面有通过串口往主机发文件的命令吗

DOS命令中的dir。可以这样用: dir [路径]文件名 /a /s 简单说明一下: /a 包含所有文件(系统文件.隐含文件) /s 对当前目录及其子目录中所有文件进行查找

在linux系统下怎么读取串口服务器的实时数据?

Linux串口读写:#include <stdio.h> /*标准输入输出定义*/#include <stdlib.h> /*标准函数库定义*/#include <unistd.h> /*Unix 标准函数定义*/#include <sys/types.h>#include <sys/stat.h>#include "string.h"#include <fcntl.h> /*文件控制定义*/#include <termios.h> /*PPSIX 终端控制定义*/#include <errno.h> /*错误号定义*/#define FALSE -1#define TRUE 0/*********************************************************************/int OpenDev(char *Dev){int fd = open( Dev, O_RDWR | O_NOCTTY ); //| O_NOCTTY | O_NDELAYif (-1 == fd){perror("Can"t Open Serial Port");return -1;}elsereturn fd;}/***@brief 设置串口通信速率*@param fd 类型 int 打开串口的文件句柄*@param speed 类型 int 串口速度*@return void*/int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300,B38400, B19200, B9600, B4800, B2400, B1200, B300, };int name_arr[] = {38400, 19200, 9600, 4800, 2400, 1200, 300, 38400,19200, 9600, 4800, 2400, 1200, 300, };void set_speed(int fd, int speed){int i;int status;struct termios Opt;tcgetattr(fd, &Opt);for ( i= 0; i < sizeof(speed_arr) / sizeof(int); i++) {if (speed == name_arr[i]) {tcflush(fd, TCIOFLUSH);cfsetispeed(&Opt, speed_arr[i]);cfsetospeed(&Opt, speed_arr[i]);status = tcsetattr(fd, TCSANOW, &Opt);if (status != 0) {perror("tcsetattr fd1");return;}tcflush(fd,TCIOFLUSH);}}}/***@brief 设置串口数据位,停止位和效验位*@param fd 类型 int 打开的串口文件句柄*@param databits 类型 int 数据位 取值 为 7 或者8*@param stopbits 类型 int 停止位 取值为 1 或者2*@param parity 类型 int 效验类型 取值为N,E,O,,S*/int set_Parity(int fd,int databits,int stopbits,int parity){struct termios options;options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); /*Input*/options.c_oflag &= ~OPOST; /*Output*/if ( tcgetattr( fd,&options) != 0) {perror("SetupSerial 1");return(FALSE);}options.c_cflag &= ~CSIZE;switch (databits) /*设置数据位数*/{case 7:options.c_cflag |= CS7;break;case 8:options.c_cflag |= CS8;break;default:fprintf(stderr,"Unsupported data size/n"); return (FALSE);}switch (parity){case "n":case "N":options.c_cflag &= ~PARENB; /* Clear parity enable */options.c_iflag &= ~INPCK; /* Enable parity checking */break;case "o":case "O":options.c_cflag |= (PARODD | PARENB); /* 设置为奇效验*/options.c_iflag |= INPCK; /* Disnable parity checking */break;case "e":case "E":options.c_cflag |= PARENB; /* Enable parity */options.c_cflag &= ~PARODD; /* 转换为偶效验*/options.c_iflag |= INPCK; /* Disnable parity checking */break;case "S":case "s": /*as no parity*/options.c_cflag &= ~PARENB;options.c_cflag &= ~CSTOPB;break;default:fprintf(stderr,"Unsupported parity/n");return (FALSE);}/* 设置停止位*/switch (stopbits){case 1:options.c_cflag &= ~CSTOPB;break;case 2:options.c_cflag |= CSTOPB;break;default:fprintf(stderr,"Unsupported stop bits/n");return (FALSE);}/* Set input parity option */if (parity != "n")options.c_iflag |= INPCK;tcflush(fd,TCIFLUSH);options.c_cc[VTIME] = 150; /* 设置超时15 seconds*/options.c_cc[VMIN] = 0; /* Update the options and do it NOW */if (tcsetattr(fd,TCSANOW,&options) != 0){perror("SetupSerial 3");return (FALSE);}return (TRUE);}int main(int argc, char **argv){int fd;int nread;char buff[512];char *dev = "/dev/ttyS0"; //串口二fd = OpenDev(dev);set_speed(fd,4800);if (set_Parity(fd,8,1,"N") == FALSE){printf("Set Parity Error/n");exit (0);}int i;i = getchar();if ( i == "1"){while (1) //循环读取数据{while((nread = read(fd, buff, 512))>0){printf("/nLen %d/n",nread);buff[nread+1] = "/0";printf( "/n%s", buff);}}}if ( i == "2"){while (1) //循环写入数据{gets(buff);printf("------buff--->%s<--------/n",buff);int num = strlen(buff);printf("--------num---->%d<--------------/n",num);if ( num > 0){printf("Wirte num not NULL./r/n");nread = write(fd, buff ,num);if(nread == -1){printf("Wirte sbuf error./n");}printf("--nread---->%d<-----------/n",nread);}}}close(fd);//exit (0);}

怎么才能把串口的数据读到PLC上呢?s7-200,rs485

把什么东西的数据读到PLC呀

怎么才能把串口的数据读到PLC上呢?s7-200,rs485

西门子PLC针对外部设备,使用串口通信时,协议为MODBUS,但通常为2种方式,1是PLC为主站,读取外部设备信号,比如变频器,温控器等,从网上下载西门子200PLC指令库;调用里面的集成指令MASTER即可,不会写的找到那些指令按F1,帮助里都有范例。然后对照设备厂家的数据接口表,从接收到的数据里剥离自己想要的数据,逻辑处理后再写进去。第2种是PLC是从站,响应外部主站信号,比如楼宇自控系统要读取你PLC的数据,就走MODBUS协议,在指令库里找到SLAVER指令,调用。至于什么接口并不是重点,接口可以转化。扩展资料:当PLC的RS485口经非隔离的PC/PPI电缆与电脑连接、PLC与PLC之间连接或PLC与变频器、触摸屏等通信时时有通信口损坏现象发生,较常见的损坏情况如下:R1或R2被烧断,Z1、Z1和SN75176完好。这是由于有较大的瞬态干扰电流经R1或R2、桥式整流、Z1或Z1到地,Z1、Z2能承受最大10A电流的冲击,而该电流在R1或R2上产生的瞬态功率为:102×10=1000W,当然会将其烧断。SN75176损坏,R1、R2和Z1、Z2完好。这主要可能是受到静电冲击或瞬态过电压速度快于Z1、Z2的动作速度造成的,静电无处不在,仅人体模式也会产生±15kV的静电。Z1或Z2、SN75176损坏,R1和R2完好。这可能是受到高电压低电流的瞬态干扰电压将Z1或Z2和SN75176击穿,由于电流较小和发生时间较短因而R1、R2不至于发热烧断。由以上分析得知PLC接口损坏的主要原因是由于瞬态过电压和静电造成,产生瞬态过电压和静电的原因很多也较复杂,如由于PLC内部24V电源和5V电源共地,24V电源的输出端子L+、M为其它设备混合供电可能导致地电位变化,从而造成共模电压超出允许范围。所以EIA-485标准要求将各个RS485接口的信号地用一条低阻值导线连接在一起以保证各节点的地电位相等,消除地线环流!当带电插拔未隔离的连接电缆时,由于两端电位不相等电路中又存在诸多电感、电容之类的器件,插拔瞬间必然产生瞬态过电压或过电流。连接在RS485总线上的其它设备产生的瞬态过电压或过电流同样会流入到PLC,总线上连接的设备站点数越多,产生瞬态过电压的因素也越多。

跪求wch ch352l串口卡驱动

http://www.drvsky.com/driver/CH352.htm

php 怎么读取WCH PCI Express-SERIAL串口?

PHP-Serial上面的是PHP连接COM口的类,它是通过PHP调用SHELL命令交互来执行连接COM口的。线上环境无论从性能和稳定性和安全性都不建议这样使用。

WCH 351Q 两串口卡,装驱动自动识别安装的是LPT并口.怎么解决

用的什么数据线 ??并口还是USB抓接 先做机器脱机自检 方法关机 按住换行+开机 如果机器可以自动打印 说明机器无问题 可能跟你驱动选择端口或者数据传输这方面 包括你电脑端口和数据线及打印机端口 楼主可以更换其他电脑测试 至于驱动端口选择首先你确认用的是并口线还是USB数据转接线 并口的话查看电脑设备管理器的端口选项 看是否有LPT端口 如果没有 说明楼主电脑有问题 如果有 那么把驱动端口改成和设备管理器端口一致就行了 如果楼主是USB转接线的话 那这种数据线不稳定 像楼主所说 之前还正常 这段时间不打了 那么确认驱动端口选择为USB的话 还是不打 建议更换转换线了

seiscomp串口是啥串口?

串行通信是一种概念,是指一比特一比特的收发数据,相对于并行通信可一次性收发N比特而言。

串口助手中RX,TX是怎么定义的?

RX就是表示接到到的字节数 RX是Receive(接收)。TX就是表示发送的字节数,TX其实就是Transmit(传送)的缩写,在计算机通信方面都这样简写。一个字节通常8位长。但是,一些老型号计算机结构使用不同的长度。为了避免混乱,在大多数国际文献中,使用词代替byte。在多数的计算机系统中,一个字节是一个8位长的数据单位,大多数的计算机用一个字节表示一个字符、数字或其他字符。一个字节也可以表示一系列二进制位。在一些计算机系统中,4 个字节代表一个字,这是计算机在执行指令时能够有效处理数据的单位。一些语言描述需要2个字节表示一个字符,这叫做双字节字符集。一些处理器能够处理双字节或单字节指令。字节通常简写为“B”,而位通常简写为小写“b”,计算机存储器的大小通常用字节来表示。扩展资料:1KB=1024B;1MB=1024KB=1024×1024B。1B(byte,字节)= 8 bit(见下文);1KB(Kilobyte,千字节)=1024B= 2^10 B;1MB(Megabyte,兆字节,百万字节,简称“兆”)=1024KB= 2^20 B;1GB(Gigabyte,吉字节,十亿字节,又称“千兆”)=1024MB= 2^30 B;1TB(Terabyte,万亿字节,太字节)=1024GB= 2^40 B;1PB(Petabyte,千万亿字节,拍字节)=1024TB= 2^50 B;1EB(Exabyte,百亿亿字节,艾字节)=1024PB= 2^60 B;

为什么用串口测试工具读取Modbus设备数据时,寄存器地址要加1?

因为寄存器地址要加1是:MODBUS是MODCON公司开发的一个通讯协议。他的起始地址是从1开始的。别的都是从0开始的,正好错开一位。和第三方设备走MODBUS通讯的时候要加1。一、串口串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口)。串行是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送。串行特点是通信线路简单,只要一对传输线就可以实现双向通信。二、串口由来串口的出现是在1980年前后,数据传输率是115kbps~230kbps。串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备。串口也可以应用于两台计算机(或设备)之间的互联及数据传输。由于串口(COM)不支持热插拔及传输速率较低,目前部分新主板和大部分便携电脑已开始取消该接口。目前串口多用于工控和测量设备以及部分通信设备中。

VC/MFC如何在一个函数循环中中响应串口消息

建议看经典入门书Visual C++_Turbo C串口通信编程实践循序渐进

什么是串口,什么是并口,都是干什么用的

串口 叫做串行接口,现在的电脑一般有两个串行口:COM1和、COM2。你到计算机后面能看到9针D形接口就是了,有时我们也称它为RS-232接口。现在有很多手机数据线或者物流接收器都采用COM口与计算机相连。 并口(LPT口) 并口(Parallel Port/Interface)是电脑早期使用的25针接口,俗称打印口。并口采用25针的双排插口,除最普遍的应用于打印机以外,还可用于连接扫描仪、ZIP驱动器甚至外置网卡、磁带机以及某些扩展硬盘等设备。 PCI 是Peripheral Component Interconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽。PCI插槽也是主板带有最多数量的插槽类型,在目前流行的台式机主板上,ATX结构的主板一般带有5~6个PCI插槽,而小一点的MATX主板也都带有2~3个PCI插槽,可见其应用的广泛性。PCI是由Intel公司1991年推出的一种局部总线。从结构上看,PCI是在CPU和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。管理器提供了信号缓冲,使之能支持10种外设,并能在高时钟频率下保持高性能,它为显卡,声卡,网卡,MODEM等设备提供了连接接口,它的工作频率为33MHz/66MHz。最早提出的PCI 总线工作在33MHz 频率之下,传输带宽达到了133MB/s(33MHz X 32bit/8),基本上满足了当时处理器的发展需要。随着对更高性能的要求,1993年又提出了64bit 的PCI 总线,后来又提出把PCI 总线的频率提升到66MHz 。目前广泛采用的是32-bit、33MHz 的PCI 总线,64bit的PCI插槽更多是应用于服务器产品。由于PCI 总线只有133MB/s 的带宽,对声卡、网卡、视频卡等绝大多数输入/输出设备显得绰绰有余,但对性能日益强大的显卡则无法满足其需求。目前PCI接口的显卡已经不多见了,只有较老的PC上才有,厂商也很少推出此类接口的产品。

计算机串口与并口的区别、联系

1 楼 内容不少其实,百度百科里 都有串口http://baike.baidu.com/view/69108.htm并口http://baike.baidu.com/view/702464.htm

我想知道串口全modem和串口null modem的区别是什么?

串口全modem 就是 老式 的 33.6k 或者 56k modem使用RS232串口9个信号串口null modem 其实 就是 2个 RS232 对联,中间不用 modem如 A 端 Tx 连 B端 Rx,A 端 Rx 连 B端 Tx,等楼主 可以 搜 null modem关键词,有 很多 连接图 可以参考

用MOXA串口卡设置RS422标准接收数据,收不到,高分求助!!!

同意 1 楼得!可能是连接不对!可以联系 moxa 客服

moxa串口服务器 5130如何恢复出厂

用九汉科技的,信我的没错

moxa NPORT 5410 串口服务器 端口如何映射

问问你公司老员工,他们会帮组你解决的,愿楼主工作顺利

优质串口服务器品牌有哪些

工业上用得最多的是 FTS-501、FTS-516B、FTS-502-C、FTS-532-32MD、FTS-504B、FTS-508B....等等这些型号吧。至于厂家有几个老品牌:北亿纤通、MOXA、F-tone Networks、罗杰康、西门子、研华...等等,这些在行内都是品质比较好的品牌了。相比之下其中北亿纤通、烽火、F-tone Networks、瑞斯品质好,同时性价比也很高。串口服务器的作用:串口服务器提供串口转网络功能,能够将RS-232/485/422串口转换成TCP/IP网络接口,实现RS-232/485/422串口与TCP/IP网络接口的数据双向透明传输。使得串口设备能够立即具备TCP/IP网络接口功能,连接网络进行数据通信,极大的扩展串口设备的通信距离。亿万克是研祥高科技控股集团旗下的全资子公司。研祥集团作为中国企业500强,持续运营30年。研祥集团全球49个分支机构,三个国家级创新平台,一直致力于技术创新引领行业发展。 拥有1100多项授权专利,1300项非专利核心技术。【感兴趣请点击此处,了解一下。 】

moxa串口卡连接机器后 机器一次意外的短路 重新连接后发现不能接收数据了 是不是什么被烧了啊

很有 可能!有 备用 卡吗?要不 咨询 moxa 客服 或者 送修
 1 2 3 4  下一页  尾页