㈠ JavaWeb 多線程 串口通信
主線程不停就行了,網頁關閉或退出頁面只關閉一個線程,別的線程繼續跑
㈡ 求做一個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)
{
}
}
㈢ 在c#的web中怎樣實現與串口通訊
使用使用serialport這個類,
可以在DataReceived事件中作處理。
也可以直接使用Read、和Write函數對串口進行操作。
㈣ 在java的web程序中怎麼使用串口通訊
最近在做java串口通訊,主要是用個人電腦通過串口從RS485讀取數據,並通過crc循環冗餘校驗,把接收正確的數據解析,插入資料庫mysql,並用SSH技術把資料庫數據以表格以及圖表形式顯示
思路:
1.為了從RS485讀取數據,由於暫時沒有硬體設備,系統是win7,故採用Virtual Serial Port Drive(VSPD)這塊虛擬串口軟體代替。並下載sscom32.exe模擬串口通信軟體。
2. 要想實現串口通信,用Java實現串口通信(windows系統下),需要用到sun提供的串javacomm20-win32.zip。其中要用到三個文件,配置如下:
comm.jar放置到 JAVA_HOME/jre/lib/ext;
win32com.dll放置到 JAVA_HOME/bin;
javax.comm.properties 兩個地方都要放
jre/lib(也就是在JAVA文件夾下的jre),JAVA_HOME/jre/lib下
這個配置在我電腦上測試成功,也許不需要這樣麻煩。注意的是,如果你使用myeclipse,因為它自帶jre,你需要在它所在的jre相應位置放dll以及properties文件。
是不是感覺這個很麻煩,還有windows的限制。後來我們下載rxtx這款開源包代替了剛才的comm。不僅windows下可以,linux下也可以。使用方法很簡單,配置如下:
RXTXcomm.jar放到JAVA_HOME/jre/lib/ext
rxtxSerial.dll放到JAVA_HOME/bin
如果你使用myeclipse工具,你需要把rxtxSerial.dll放到它自帶的jre里。
3.新建eclipse工程,添加comm.jar或者RXTXcomm.jar包。因為javacomm20-win32.zip包里有樣例SimpleRead.java,可以通過這個例子測試串口是否正確
4.接收數據正確後,根據傳送接收雙方的協議,採用CRC循環校驗,根據傳輸的一方的校驗函數判定是否是正確傳輸
5.把正確結束的數據解析,查看自己指定的通訊規則,然後解析
6.插入資料庫,jdbc插入
7.數據統計,定時統計每小時,每天,每月,每年的平均值,採用quartz服務來實現。
8.建立web工程,採用hibernate3,spring3,dwr技術把資料庫數據動態顯示,圖表採用jfreechart,以及AJAX的運用
㈤ 在java的web程序中怎麼使用串口通訊
方法如下:
新建eclipse工程,添加comm.jar或者RXTXcomm.jar包。因為javacomm20-win32.zip包里有樣例SimpleRead.java,可以通過這個例子測試串口是否正確。
接收數據正確後,根據傳送接收雙方的協議,採用CRC循環校驗,根據傳輸的一方的校驗函數判定是否是正確傳輸。
把正確結束的數據解析,查看自己指定的通訊規則,然後解析。
插入資料庫,jdbc插入。
數據統計,定時統計每小時,每天,每月,每年的平均值,採用quartz服務來實現。
建立web工程,採用hibernate3,spring3,dwr技術把資料庫數據動態顯示,圖表採用jfreechart,以及AJAX的運用
㈥ 關於網頁遠程式控制制串口
可以用ACCESS存放數據,
也可以用XML,甚至文本文件存放臨時數據.
㈦ 如何在web頁面上獲取客戶端的串口數據
web頁面上獲取客戶端的串口數據的方法:
可以寫一個串口代理程序,讀取本地串口,將獲取到的數據存入資料庫。web通過ajax+定時器獲取資料庫中的數據顯示就好了。
如果要交互,可以搞一個讓上面提到的串口程序開一個socket.將串口通信獲取的數據,通過socket發出去,web頁面可以用websocket。
下面一個通過flash操作ardiuno的demo.用的是類似於第二種交互的方法。只不過用的是ActionScript.原理是一樣的。
串列介面是一種可以將接收來自CPU的並行數據字元轉換為連續的串列數據流發送出去,同時可將接收的串列數據流轉換為並行的數據字元供給CPU的器件。一般完成這種功能的電路,我們稱為串列介面電路。
串口通信(Serial Communications)的概念非常簡單,串口按位(bit)發送和接收位元組的通信方式。
注意事項:
戶端的系統數據如果能隨便被web頁面讀取,那大家也不敢隨便打開網頁了,至於說用IE的ActiveX 控制項,這個也沒有前途,IE默認不開啟,現在有IE的也沒什麼人,當然如果是用於特定客戶的話可以了,反正你想幹嘛就幹嘛。
㈧ asp.net開發的web程序,怎麼操作和控制客戶端的串口。
關於 串口 有本 基礎 的 書
Visual_Basic與_RS-232_串列通信控制
網路上有電子文檔的
㈨ 如何在web頁面上獲取客戶端的串口數據
這類本地操作,沒有純 web 解決方案
僅僅瀏覽器內頁面腳本是無法做到的。
其核心是需要可跑在本地系統上的串口讀取程序
不管 ActiveX、本地Node、或者本地其他應用程序都是如此
此外,還需要讀取後可與瀏覽器頁面交換數據的過程
所以,ActiveX (NAPAI)之類的瀏覽器 plugin 的確是比較直接的實現方式
而其他的方案,還需要本地啟動服務(HTTP/WebSocket)來與頁面進行通信,本地埠是否沖突又會是問題。
㈩ 在CGI程序中可以調用串口嗎,CGI是c寫的。想用個web界面控制一個設備,設備上有arm+uClinux和單片機
CGI通過串口去單片機很容易啊,就是fopen就解決了啊。串口就是個文件嘛。你上網查查linux如何控制串口就可以了,uclinux一樣的。
單片機給CGI發命令比較麻煩,要用到AJAX技術。這個你GOOGLE下吧,至少要幾百字才能解釋清楚的概念。CGI實現簡單的AJAX也不難,GOOGLE上都有常式的。簡單講思路就是WEB頁面設計成讓用戶定時刷新部分頁面,這樣就定時調用CGI查詢某數據的狀態。此時CGI通過串口要求單片機(從機)返回數據。或者你也可以整一個後台程序接收串口中斷,然後CGI通過進程間通訊非同步獲取。