1. 串口服务器如何使用
设备连线:
首先将串口服务器的串口和设备串口连接,串口服务器的 RJ45接口和路由器(或者直接连接PC)连接,然后对串口服务器上电。
配置串口参数:
串口服务器可以通过Web网页进行参数修改。通过 Web网页修改参数时需要串口服务器必须和计算机处于同一个子网中。串口参数包括:波特率、数据位、停止位、校验位。
配置网络参数:
串口服务器必须具有一个 IP,可以配置为静态或者通过 DHCP服务器获得。配置串口联网服务器的工作模式:包括 TCP SERVER模式(是指计算机主动寻找串口联网服务器)、 TCP CLIENT模式(是指串口联网服务器主动找计算机)、 UDP模式。配置网络参数的目的 是让计算机能够顺利地和联网服务器建立连接。
启用虚拟串口:
由于一般用户的 PC端软件还是打开串口和设备通信的,此时由于改用了网络所以必须在计算机上虚拟一个串口,虚拟串口负责与串口服务器建立连接,并将数据转发给打开虚拟串口的用户程序。运行用户设备通信程序,并打开虚拟串口。之后用户应用程序即可和设备通信。
飞畅科技,专业做工业交换机的厂家,欢迎前来了解、交流。
2. 如何在web页面上获取客户端的串口数据
web页面上获取客户端的串口数据的方法:
可以写一个串口代理程序,读取本地串口,将获取到的数据存入数据库。web通过ajax+定时器获取数据库中的数据显示就好了。
如果要交互,可以搞一个让上面提到的串口程序开一个socket.将串口通信获取的数据,通过socket发出去,web页面可以用websocket。
下面一个通过flash操作ardiuno的demo.用的是类似于第二种交互的方法。只不过用的是ActionScript.原理是一样的。
串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。
串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。
注意事项:
户端的系统数据如果能随便被web页面读取,那大家也不敢随便打开网页了,至于说用IE的ActiveX 控件,这个也没有前途,IE默认不开启,现在有IE的也没什么人,当然如果是用于特定客户的话可以了,反正你想干嘛就干嘛。
3. 求做一个web页面控制服务器串口,可用Mscomm控件做!满意会继续最佳。htm页面都能操作本地串口。
看了你的留言直接在这回吧,其实网页方面我也是个菜鸟。去年我做过一个类似的,当时也是自学了1个月的iis的配置,asp.net,vb串口操作等,大二假期比较闲。
做法:用DS18B20温度传感器连接51单片机,然后单片机通过串口与电脑通信,电脑成为服务器,手机连接网页,进行温度监控,开关单片机外接的继电器等等操作。
硬件端的代码对你没用,服务器端我的基本思路就是asp.net连接数据库,然后用vb实时扫描数据库,通过vb中的MScomm控件连接串口,vb的代码对你也没啥用,因为MScomm连接单片机的代码的“通信协议”我是写在单片机上的,不配套就没用了
这是网页的代码,不精简,高手莫笑...
主要功能就是连接数据库。。。里面没能直接通过asp.net控制串口,貌似也有C#直接控制的,你去CSDN看看吧,我试过是没问题的,就是操作不太方便(可能我太菜了)
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//温度
SqlConnection cnn1 = new SqlConnection(@"Data Source=YINGJHSHP541\SQLEXPRESS;Initial Catalog=test3;User ID=sa;Password=yingjh");
cnn1.Open();
//表
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = cnn1;
cmd1.CommandText = "select * from T";
SqlDataReader data1;
data1 = cmd1.ExecuteReader();
GridView1.DataSource = data1;
GridView1.DataBind();
cnn1.Close();
//图
cnn1.Open();
SqlDataAdapter Da = new SqlDataAdapter();
Da.SelectCommand = new SqlCommand("select 时间,[温度(℃)] from T", cnn1);
DataSet ds = new DataSet();
Da.Fill(ds);
DataView myView = new DataView(ds.Tables[0]);
Chart1.Series["Series1"].Points.DataBindXY(myView, "时间", myView, "温度(℃)");
cnn1.Close();
cnn1.Dispose();
//状态
SqlConnection cnn2 = new SqlConnection();
cnn2.ConnectionString = @"Data Source=YINGJHSHP541\SQLEXPRESS;Initial Catalog=test3;User ID=sa;Password=yingjh";
cnn2.Open();
SqlCommand cmd2 = new SqlCommand();
cmd2.Connection = cnn2;
cmd2.CommandText = "select * from ST";
SqlDataReader data2;
data2 = cmd2.ExecuteReader();
data2.Read();
string a = data2.GetString(0);
switch (a)
{
case "1":
Label2.Text = "打开";
break;
case "0":
Label2.Text = "预设";
break;
case "-1":
Label2.Text = "关闭";
break;
default:
break;
}
Label4.Text = data2.GetString(1) + "℃";
cnn2.Close();
cnn2.Dispose();
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection cnn = new SqlConnection(@"Data Source=YINGJHSHP541\SQLEXPRESS;Initial Catalog=test3;User ID=sa;Password=yingjh");
SqlCommand cmd = new SqlCommand();
cnn.Open();
cmd.Connection = cnn;
//设置开关,flag为开关控制权
switch (DropDownList1.Text)
{
case "1":
cmd.CommandText = "update ST set STATE='1'" + ",flag='1'";
break;
case "0":
cmd.CommandText = "update ST set STATE='0'" + ",STEMP='" + TextBox1.Text + "',flag='1'";
break;
case "-1":
cmd.CommandText = "update ST set STATE='-1'" + ",flag='1'";
break;
default:
cmd.CommandText = "update ST set STATE='0'" + ",STEMP='" + TextBox1.Text + "',flag='1'";
break;
}
cmd.ExecuteNonQuery();
cnn.Close();
cnn.Dispose();
//温度
SqlConnection cnn1 = new SqlConnection(@"Data Source=YINGJHSHP541\SQLEXPRESS;Initial Catalog=test3;User ID=sa;Password=yingjh");
cnn1.Open();
//表
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = cnn1;
cmd1.CommandText = "select * from T";
SqlDataReader data1;
data1 = cmd1.ExecuteReader();
GridView1.DataSource = data1;
GridView1.DataBind();
cnn1.Close();
//图
cnn1.Open();
SqlDataAdapter Da = new SqlDataAdapter();
Da.SelectCommand = new SqlCommand("select 时间,[温度(℃)] from T", cnn1);
DataSet ds = new DataSet();
Da.Fill(ds);
DataView myView = new DataView(ds.Tables[0]);
Chart1.Series["Series1"].Points.DataBindXY(myView, "时间", myView, "温度(℃)");
cnn1.Close();
cnn1.Dispose();
//状态
SqlConnection cnn2 = new SqlConnection();
cnn2.ConnectionString = @"Data Source=YINGJHSHP541\SQLEXPRESS;Initial Catalog=test3;User ID=sa;Password=yingjh";
cnn2.Open();
SqlCommand cmd2 = new SqlCommand();
cmd2.Connection = cnn2;
cmd2.CommandText = "select * from ST";
SqlDataReader data2;
data2 = cmd2.ExecuteReader();
data2.Read();
string a = data2.GetString(0);
switch (a)
{
case "1":
Label2.Text = "打开";
break;
case "0":
Label2.Text = "预设";
break;
case "-1":
Label2.Text = "关闭";
break;
default:
break;
}
Label4.Text = data2.GetString(1) + "℃";
cnn2.Close();
cnn2.Dispose();
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
4. web实现串口调试助手
最近受朋友之托试图用web前端实现串口调试助手,一开始觉得不太有可行性,以前用过的串口调试助手都是客户端程序。觉得浏览器怎么会有调用电脑上的串口的功能呢。后来朋友找了几个资料给我,说网上有人实现,他看不懂。我看了之后恍然大悟,原来是用node。如此万能。
node 实现操作串口的模块是一个 serialport 的模块,网上一搜有很多好文,此处记录一下实现过程中遇到的一些问题以及解决方法。
一开始被忽略的问题 ,我把 node 服务搭在自己的服务器上,后来返回的串口数组全是一堆令我懵逼的数据。后来想起那是 node 读取了我的
Linux 服务器的串口,而不是用户使用的 pc。
由此引出的两个问题。第一,node 服务必须搭建在用户使用的 pc 上,因此用户使用的电脑必须有 node 环境。第二,用户 pc 一般是 windows 系统, node 的模块很多在 Linux 上很容易安装成功,在 Windows 上安装比较困难。
首先解决的是第二个问题:在Windows上安装serialport失败
解决方法: npm install --global --proction windows-build-tools
参考链接1: https://stackoverflow.com/questions/33142357/unable-to-install-node-js-serialport-npm-package-on-windows
参考链接2: https://github.com/nodejs/node-gyp#installation
安装好之后就可以安装 serialport 模块了。
解决第一个问题:用户电脑的 node 环境
解决方法: electron ——使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用 (官网链接: https://electronjs.org/ )(w3c: https://www.w3cschool.cn/electronmanual/wcx31ql6.html )
使用 electron 搭建的桌面应用可以像平常我们使用的 exe 应用程序一样直接运行,不需要搭建环境。
npm install -g electron-prebuilt //提示electron-prebuilt已经更名为electron
npm install -g electron //安装失败
使用淘宝镜像安装问题解决: cnpm install -g electron
参考链接: http://blog.csdn.net/upc_xbt/article/details/53342129
解决方法: npm install -g electron-rebuild
以后每次重新运行 electron . 的时候再执行一次 ``./node_moles/.bin/electron-rebuild` 对原生模块进行rebuild
参考链接: https://www.w3cschool.cn/electronmanual/eqsc1qko.html
参考链接: http://m.blog.csdn.net/u014563989/article/details/75045052
cnpm install -g electron-packager //安装打包工具
electron-packager . 可执行文件的文件名 --win --out 打包成的文件夹名 --arch=x64位还是32位 --version版本号 --overwrite --ignore=node_moles
因为打包的时候执行的命令带有 --ignore=node_moles , 即不将 node_moles 里面的依赖包打包,所以在打包后的新文件中,进入resource 目录会发现 node_moles 是一个空文件夹,所以自然找不到依赖包。如果去掉打包时的命令参数 --ignore=node_moles ,则需要非常长的打包时间。我的解决方法是将原来 node_moles 文件夹中的相关的依赖包文件复制进打包后的 node_moles 中,虽然是一个比较无脑的方法,每次打包都要拖动相关文件进去,不过我备份了一个 node_moles 文件夹,下一次打包后就把备份的 node_moles 直接复制进去。
node 模块 ccap : 用于生成验证码图片,可以在 express 后台
res.send(图片) ,前端的 img 的 src设置为请求这个接口。
ccap的用法可以参考链接: https://cnodejs.org/topic/50f90d8edf9e9fcc58a5ee0b
5. WEB浏览器直接读取串口数据
好像 不行吧
但是 串口设备能通过转换为 TCP/IP 连入 以太网
6. asp.net开发的web程序,怎么操作和控制客户端的串口。
关于 串口 有本 基础 的 书
Visual_Basic与_RS-232_串行通信控制
网络上有电子文档的
7. 在c#的web中怎样实现与串口通讯
使用使用serialport这个类,
可以在DataReceived事件中作处理。
也可以直接使用Read、和Write函数对串口进行操作。