导航:首页 > 编程语言 > 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相关的资料

热点内容
企业透明加密软件有监视功能吗 浏览:492
桌面的运行命令 浏览:7
主流厂商服务器维护流程是什么 浏览:807
压缩棉的被子先洗洗在用 浏览:242
批处理bat代码和文件夹 浏览:296
怎么交叉编译tslib14 浏览:493
致程序员生产力飙升 浏览:760
程序员害怕下班吗 浏览:107
铁路汉宜线加密网实景效果图 浏览:929
php工作难找 浏览:440
微信拼手气红包源码 浏览:380
javaexcel公式计算 浏览:628
mastercam二维编程 浏览:384
加密协议aes和tkip 浏览:707
数据结构与算法彭军 浏览:770
二类app是什么意思 浏览:498
可示教编程的plc 浏览:404
好看的个人界面源码 浏览:882
手机加密文件夹解密方法 浏览:654
智能门锁只能添加密码不能修改 浏览:554