如何读取串口服务器数据
① 如何在web页面上获取客户端的串口数据
web页面上获取客户端的串口数据的方法:
可以写一个串口代理程序,读取本地串口,将获取到的数据存入数据库。web通过ajax+定时器获取数据库中的数据显示就好了。
如果要交互,可以搞一个让上面提到的串口程序开一个socket.将串口通信获取的数据,通过socket发出去,web页面可以用websocket。
下面一个通过flash操作ardiuno的demo.用的是类似于第二种交互的方法。只不过用的是ActionScript.原理是一样的。
串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。
串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。
注意事项:
户端的系统数据如果能随便被web页面读取,那大家也不敢随便打开网页了,至于说用IE的ActiveX 控件,这个也没有前途,IE默认不开启,现在有IE的也没什么人,当然如果是用于特定客户的话可以了,反正你想干嘛就干嘛。
② delphi 语言中怎样读串口服务器
一般串口通讯,除了要求波特率,奇偶校验,数据位长度一致外,还要求有一定的通讯协议,保证接收端收到数据是正确的。如帧头、帧号,数据,校验和,帧尾。具体协议不尽相同,但保证数据作用一致。如用delphi,可选用spcomm控件程序。
③ c#如何实现串口通信读取数据
使用System.IO.Port.SerialPort类实现串口通信
System.IO.Port.SerialPort类介绍
System.IO.Port.SerialPort是.NET Framework提供的操作串行端口的类,里面提供了一些方法、属性和和事件供开发者调用操作串口。
调用流程
1. 直接调用SerialPort的静态方法GetPortNames()获取当前计算机的串行端口名称数组
2.根据串口名称,初始化SerialPort对象,设置参数,调用Open()方法打开串口
3.调用Write()方法发送数据
4.注册接收数据的监听,获取数据(或者另起线程循环读取接收数据,本文使用注册监听方式接收数据)
具体代码实现
④ 怎么样正确读取串口发过来的数据,并转成数据
1、通信至少需要两台设备。
2、单片机的串口可以连接到另外一台具有UART功能的设备,如另一台单片机或电脑。
3、读进的数据并不是单片机本身的内容,而是另一台设备发出的。
4、符合异步串行通信帧格式和约定波特率的字符。
⑤ 如何使用C#读取串口信息
最近受朋友委托,帮他写一个读取串口的程序。以前只知道需要调用Windows API来实现,查询了MSDN之后发现,从.Net framework 2.0开始,.Net内部已经封装了SerialPort类,使得读取串口内容变得非常容易。
SerialPort位于System.IO.Ports namspace下面。常用的构造函数为
1: public SerialPort(
2: string portName,
3: int baudRate,
4: Parity parity,
5: int dataBits,
6: StopBits stopBits
7: )
portName:端口号,如COM1,COM2,COM3……
baudRate:每秒数据位,如9600
parity:是否有奇偶校验
dataBits:数据位
stopBits:停止位
这些可以更据具体的硬件指标设定。
此外SerialPort类,还提供了以下属性。
Handshake:设置握手协议,(None,XOnXOff,RequestToSend 和 RequestToSendXOnXOff
WriteTimeout:写入数据时,多久超时
ReadTimeout:读取数据时,多久超时
我主要是通过窜口读取数据,所以使用了SerialPort类的DataReceived事件,这个事件调用的时候要注意一点。我们不可以再这个事件内直接更新UI内容,如给textbox赋值。微软的官方解释是,这个事件其实是在另外一个线程(非GUI线程)内触发的。
以下是我的一个简单范例程序:
1: using System;
2: using System.ComponentModel;
3: using System.Drawing;
4: using System.IO.Ports;
5: using System.Windows.Forms;
6:
7: namespace Reader
8: {
9: public partial class MainForm : Form
10: {
11: private static SerialPort _serialPort = null;
12:
13: public MainForm()
14: {
15: InitializeComponent();
16: }
17:
18: void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
19: {
20: this.Invoke(new EventHandler(DoUpdate));
21: }
22:
23: private void DoUpdate(object s, EventArgs e)
24: {
25: this.lbText.Text = _serialPort.ReadExisting();
26: }
27:
28: private void btnStart_Click(object sender, EventArgs e)
29: {
30: _serialPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
31: _serialPort.Handshake = Handshake.RequestToSendXOnXOff;
32: _serialPort.DataReceived += new (_serialPort_DataReceived);
33: _serialPort.Open();
34:
35: this.btnStart.Enabled = false;
36: }
37: }
38: }
⑥ Java怎么读取串口数据
public static void process() {
try {
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements())
{
CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)//如果端口类型是串口则判断名称
{
if(portId.getName().equals("COM1")){//如果是COM1端口则退出循环
break;
}else{
portId=null;
}
}
}
SerialPort serialPort = (SerialPort)portId.open("Serial_Communication", 1000);//打开串口的超时时间为1000ms
serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);//设置串口速率为9600,数据位8位,停止位1们,奇偶校验无
InputStream in = serialPort.getInputStream();//得到输入流
OutputStream out = serialPort.getOutputStream();//得到输出流
//进行输入输出操作
//操作结束后
in.close();
out.close();
serialPort.close();//关闭串口
} catch (PortInUseException e) {
e.printStackTrace();
} catch ( e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
⑦ 如何读取串口设备返回的数据
首先,串口设备一般都是独享的,如果你用screen打开了,那么可能所有的接收到的信息会都传向screen,你的串口即使能打开,也未必有数据。
其次,从PC角度来看,串口接收确实是read()函数,不需要额外的函数的,至于中断之类的对于你上位机编程不知道也无所谓。一般串口接收会用一个单独的线程,建议楼主也是用另一个线程来接收
第三,关于串口的设置。谨慎猜测一下,对于这种定位设备,即使你不去设置它,它可能也会定期的输出数据的,这是从设备易用性角度猜的。所以,可能,你之前尽管认为你的串口写是有效的,实际未必。这里就涉及到串口的设置问题,最常见的设置如115200bps, 8N1格式,这些还是需要你在串口打开后设置的,具体设置的方法网上一堆,你可以根据你的编译环境查一下。针对你的设备,还是要建议你看一下设备手册
⑧ 有什么方法可以迅速读取串口来的数据
只要串口收到数据就立即显示出来就行了,不用特意用什么方法再读取了,这都是实时显示的。
串口收到数据就会中断的,响应中断就读取了,就是迅速了,还要怎么迅速?