導航:首頁 > 編程語言 > java485

java485

發布時間:2022-07-29 05:25:09

java構建的網站如何跟RS485通信

您好,如果有確定的接收位元組長度,設置Rthreshold等於接收位元組長度有利接收正確率提高.由於你的幾個下位機返回數據包位元組不等長,你可根據定址命令發出前預先改變Rthreshold值來保證接收返回符合要求的位元組長度.
不然你接收多少位元組符合你改發下一定址命令呢?程序代碼處理難度較高.
實際下位機返回數據包可在其代碼中補一定其它位元組來達到等長,從而使接收代碼變得簡潔.
等長接收數據後可對接收處理清0來等待下次接收.
補充:
假如下位機的返回數據按地址號能確定接收位元組長度,下列代碼可實現接收不等長數據,僅供參考:
Private Sub MSComm1_OnComm()
On Error Resume Next
Dim BytReceived() As Byte
Dim strBuff As String
Dim strData As String
Dim i As Integer
Dim x As Integer
Select Case MSComm1.CommEvent
Case 2
MSComm1.InputLen = 0
strBuff = MSComm1.Input
BytReceived() = strBuff
For i = 0 To UBound(BytReceived)
If Len(Hex(BytReceived(i))) = 1 Then
strData = strData & "0" & Hex(BytReceived(i))
Else
strData = strData & Hex(BytReceived(i))
End If
Next
Text3 = Text3 + strData
If Left(strData, 2) = "00" And Len(strData) = 8 Then
Text1(0).Text = Left(strData, 8)
Call DataClear
ElseIf Left(strData, 2) = "01" And Len(strData) = 10 Then
Text1(1).Text = Left(strData, 10)
Call DataClear
End If
End Select
End Sub

❷ 如何分析java thread mp

thread mp解析
頭部信息
時間,jvm信息

{code}
2011-11-02 19:05:06
Full thread mp Java HotSpot(TM) Server VM (16.3-b01 mixed mode):
{code}
線程info信息塊
{code}
"Checkpointer" daemon prio=10 tid=0x68ce1c00 nid=0x7c11 in Object.wait() [0x68b5c000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x740ad988> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at com.sleepycat.je.utilint.DaemonThread.run(DaemonThread.java:163)
- locked <0x740ad988> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:619)
{code}

"Checkpointer" daemon prio=10 tid=0x68ce1c00 nid=0x7c11 in Object.wait() [0x68b5c000]

* 線程名稱:Checkpointer
* 線程類型:daemon
* 優先順序:10,默認是5
* jvm線程id:jvm內部線程的唯一標識,0x68ce1c00
* 對應系統線程id:和top命令查看的pid對應,不過一個是10進制,一個是16進制。0x7c11
* 線程狀態:Object.wait().
* 起始棧地址
線程狀態詳解
Runnable
_The thread is either running or ready to run when it gets its CPU turn._
不解釋。

Wait on condition
_The thread is either sleeping or waiting to be notified by another thread._
該狀態出現在線程等待某個條件的發生或者sleep。
_最常見的情況是線程在等待網路的讀寫,比如當網路數據沒有準備好讀時,線程處於這種等待狀態,而一旦有數據准備好讀之後,線程會重新激活,讀取並處理數據。_

Waiting for Monitor Entry and in Object.wait()
_The thread is waiting to get the lock for an object (some other thread may be holding the lock). This happens if two or more threads try to execute synchronized code. Note that the lock is always for an object and not for indivial methods._
當一個線程申請進入臨界區時,獲取到monitor,線程將處於 「Runnable」的狀態,否則,線程 DUMP會顯示處於 「waiting for monitor entry」。
當線程獲得了 Monitor,進入了臨界區之後,如果發現線程繼續運行的條件沒有滿足,它則調用對象(一般就是被 synchronized 的對象)的 wait() 方法,放棄了 Monitor,進入 「Wait Set」隊列。只有當別的線程在該對象上調用了 notify() 或者 notifyAll() , 「 Wait Set」隊列中線程才得到機會去競爭,但是只有一個線程獲得對象的 Monitor,恢復到運行態。在 「Wait Set」中的線程, DUMP中表現為: in Object.wait()。
例:

<span style="background-color: rgb(255, 255, 255);"><span style="color:#ff6666;">{code}
"Timer-0" daemon prio=10 tid=0x695c3000 nid=0x7c00 in Object.wait() [0x69468000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x744f2850> (a java.util.TaskQueue) ###繼續wait
at java.util.TimerThread.mainLoop(Timer.java:509)
- locked <0x744f2850> (a java.util.TaskQueue) ###已經lock到0x744f2850
at java.util.TimerThread.run(Timer.java:462)
{code}</span></span>
參見:http://jameswxx.iteye.com/blog/1041173

{code}
java.lang.Thread.State: WAITING (on object monitor)
<p style="margin-top: 4px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; ">{code}</p>
線程狀態運行:
WAITING||State || Description||
|blocked|This thread tried to enter a synchronized block, but the lock was taken by another thread. This thread is blocked until the lock gets released.|
|blocked (on thin lock)|This is the same state as blocked, but the lock in question is a thin lock.||waiting|This thread called Object.wait() on an object. The thread will remain there until some other thread sends a notification to that object.|
|sleeping|This thread called java.lang.Thread.sleep().||parked|This thread called java.util.concurrent.locks.LockSupport.park().||suspended|The thread's execution was suspended by java.lang.Thread.suspend() or a JVMTI agent call.|
{code}
at java.lang.Object.wait(Native Method)
- waiting on <0x740ad988> (a java.lang.Object) ###等待堆地址為0x740ad988的java.lang.Object對象的鎖
at java.lang.Object.wait(Object.java:485)
at com.sleepycat.je.utilint.DaemonThread.run(DaemonThread.java:163)
- locked <0x740ad988> (a java.lang.Object) ###hold住堆地址為0x740ad988的java.lang.Object對象的鎖
at java.lang.Thread.run(Thread.java:619)
{code}

❸ 關於使用Java實現rs485串口通信的問題

comm.jar
通過串口,PC機可以獲取設備的輸入數據,也可以讓PC機向設備輸出輸出。你的設備應該有相關的程序與說明。

❹ 請問你如何用java實現的ModbusRTU485串口發送報文的,能提供一下代碼嗎,萬分感謝

發送就是像流中寫入16進制數據,java中用byte[]數組表示,至於數組怎麼存放數據要看接受端的要求了,這就要協議來控制,比如數據開頭是什麼,數據長度,校驗位什麼的。發數據要看接受端,兩端需要統一,不能隨便發送。讀寫數據很簡單,關鍵是處理分析數據,調試最難了,有時候還會遇到數據大小端不一致,數據解析亂碼。

❺ 在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程序通過DTU發送485命令

❼ 求高人指點。。。想用java來實現與PLC進行通信,不是通過串口。。。等待中。。

你要知道與PLC通迅的對話協議,但多數PLC的對話協議是不公開的,
公開的有:歐姆龍,西門子S7-200.
還有就是通用的對話協議如: 485/MODBUS,TCP/MODBUS
有的PLC有通用OPC介面。
JAVA是解釋性的語言,速度太慢,不太適合做工控,最好的工控語言是
DELPHI/C++BUILDER, 其次是VC++/VB

❽ JAVA讀rs485怎麼讀

comm.jar 通過串口,PC機可以獲取設備的輸入數據,也可以讓PC機向設備輸出輸出。你的設備應該有相關的程序與說明。

閱讀全文

與java485相關的資料

熱點內容
怎麼能成為優秀程序員 瀏覽:244
智行app怎麼查學生認證 瀏覽:556
萬心pdf 瀏覽:92
哪個app能看3d電影 瀏覽:270
劍網三伺服器是怎麼運營 瀏覽:690
快手app快遞在哪裡查 瀏覽:474
開發聊天機器人python 瀏覽:856
程序員入職後無法工作 瀏覽:953
買海鮮用什麼app好 瀏覽:923
看劇用什麼app好 瀏覽:906
sql命令update 瀏覽:26
生意不忙怎麼解壓 瀏覽:501
歡太健康app在哪裡下載 瀏覽:489
androidtools使用教程 瀏覽:972
十天突破雅思口語pdf劍9 瀏覽:296
李誕笑場pdf 瀏覽:266
自用紙巾做解壓筆 瀏覽:130
銀行流水解壓碼是多少 瀏覽:896
百度哪個app好用 瀏覽:317
115廣告聯盟源碼 瀏覽:496