導航:首頁 > 編程語言 > 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相關的資料

熱點內容
量子加密銀行 瀏覽:191
命令方塊獲得指令手機 瀏覽:499
學習結束感言簡短程序員 瀏覽:398
android關機鬧鍾實現 瀏覽:968
滑鼠一鍵打開文件夾設置 瀏覽:161
程序員看過來我想靜靜搞笑視頻 瀏覽:370
curlphp爬蟲 瀏覽:874
python按日期循環 瀏覽:110
php三個等號 瀏覽:760
培訓班出來的程序員解決問題很差 瀏覽:963
程序員那麼可愛25集 瀏覽:753
伺服器地址和ip地址一樣不 瀏覽:664
php中括弧定義數組 瀏覽:602
php列印堆棧 瀏覽:516
華為adb命令行刷機 瀏覽:965
人像攝影pdf 瀏覽:761
解壓文件密碼怎樣重新設置手機 瀏覽:1002
高考指南pdf 瀏覽:695
爬蟲python數據存儲 瀏覽:240
u盤怎麼取消加密 瀏覽:431