好吗?我正试图将C#代码转换为Java,我遇到了一些问题…
我在读串口,
Global
private InputStream inputStream;
private OutputStream outputStream;
outputStream = serialPort.getOutputStream();
inputStream = serialPort.getInputStream();
public void recepcaoResposta(int tam, byte[] frameHex)
{
byte[] l_frameHex = new byte[2000];
byte[] frameEvt = new byte[16];
string linha, linhaTipo;
// !! Copia vetor-parâmetro para vetor-local (evita exception nos "if's"
//caso apenas 1 byte recebido) !!
Buffer.BlockCopy(frameHex, 0, l_frameHex, 0, tam);
.....
}
public void recepcaoResposta(int tam, byte[] frameHex) {
byte[] l_frameHex = new byte[2000];
byte[] frameEvt = new byte[16];
String linha, linhaTipo;
// !! Copia vetor-parâmetro para vetor-local (evita exception nos "if's"
//caso apenas 1 byte recebido) !!
System.arraycopy(frameHex, 0, l_frameHex, 0, tam);
...
}
@Override
public void serialEvent(SerialPortEvent event) {
switch (event.getEventType()) {
case SerialPortEvent.DATA_AVAILABLE:
try {
while (inputStream.available() > 0) {
// int t = inputStream.read();
int t = serialPort.getDataBits();
byte[] f = new byte[t];
inputStream.read(f, 0, t); // Frame de bytes
recepcaoResposta(t, f);
}
} catch (IOException e) {
System.out.println("IO Exception in SerialEvent()" + e);
}
break;
}
}
但是如上所述,我只有大小为8的返回,在上面的代码中是:
int t = serialPort.getDataBits();
结果基本上是这样的:
TAM:8
l_frameHex[1]12
TAM:8
l_frameHex[1]23
好吧,经过多次尝试,我得到了它,它工作得很完美:
public static InputStream inputStream;
public static OutputStream outputStream;
@Override
public void serialEvent(SerialPortEvent evt) {
switch (evt.getEventType()) {
case SerialPortEvent.BI:
//Quebra interupção.
case SerialPortEvent.OE:
//Erro de saturação.
case SerialPortEvent.FE:
//Erro de enquadramento.
case SerialPortEvent.PE:
//Erro de pariedade.
case SerialPortEvent.CD:
//Detecção de portadora.
case SerialPortEvent.CTS:
//Limpa para enviar.
case SerialPortEvent.DSR:
//Conjunto de dados prontos.
case SerialPortEvent.RI:
//Caminho indicado.
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
/*Buffer de saída está vazio. O evento será gerado depois de uma gravação for concluída,
quando o buffer do sistema torna-se vazia novamente..."
*/
break;
case SerialPortEvent.DATA_AVAILABLE:
/*Dados disponíveis na porta serial. "
+ "Este evento será gerada uma vez quando dados novos chegam na porta de série. "
+ "Mesmo se o usuário não ler os dados, "
+ "não será gerado novamente até a próxima vez que novos dados chegam");
*/
try {
TimeUnit.MILLISECONDS.sleep(500); //
} catch (InterruptedException e) {
}
byte[] readBuffer = new byte[1024];
try {
int numBytes = 0;
while (inputStream.available() > 0) {
numBytes = inputStream.read(readBuffer);
}
String result = new String(readBuffer);
result = result.substring(0, numBytes);
System.out.println(result + "\n");
} catch (IOException e) {
}
break;
}
}
我有一个Velleman k8090中继板,我试图从中读取一些数据。我可以很好地写入电路板,但每当我输出读取的数据时,我都会得到奇怪的字符,比如菱形或倒置的问号。以下是我的部分代码: 为什么我会有这些奇怪的角色?文件规定它应该返回年份和星期。 编辑:经过一些搜索和故障排除,我现在非常确定它与Python代码或数据类型有关,而不是与硬件有关。这个论坛包含了一个C语言的例子,它从黑板上读取。我从黑板上
问题内容: 我有一个Java程序,必须读取Arduino发送的信息。我从这里获取了Java代码。现在,我不太了解它是如何工作的,但是我尝试对其进行修改,并且得到了以下信息: 我创建一个对象串行COM口,我需要在主程序,然后我使用和当我需要它。 效果很好,Arduino获取数据并将其显示在LCD显示屏中。问题是。程序运行时,它会不断从串行端口读取数据(大约每40毫秒一次),但这并不意味着Arduin
问题 你想通过串行端口读写数据,典型场景就是和一些硬件设备打交道(比如一个机器人或传感器)。 解决方案 尽管你可以通过使用Python内置的I/O模块来完成这个任务,但对于串行通信最好的选择是使用 pySerial包 。 这个包的使用非常简单,先安装pySerial,使用类似下面这样的代码就能很容易的打开一个串行端口: import serial ser = serial.Serial('/dev
问题内容: 我需要编写一个风暴喷口以从端口读取数据。想知道在逻辑上是否可行。 考虑到这一点,我设计了一个简单的拓扑结构,该拓扑结构设计为只有一个喷嘴和一个螺栓。喷口将收集使用wget发送的HTTP请求,螺栓将显示请求-就是那样。 我的喷口结构如下: 我也实现了其余方法。 将其转换为拓扑并运行它时,发送第一个请求时出现错误: java.lang.RuntimeException:java.io.No
我正在开发一个WPF应用程序,它将读取串行端口上的数据,对其进行解析,并将其显示在UI上。 我必须使用串行端口Buad速率-115200,数据位-8,停止位-1。 我在串行端口上每秒发送10000字节,将由我的WPF应用程序读取。 但是,在这里我面临的问题与用户界面。当我开始阅读COM端口我的UI冻结。它不允许任何人做任何事情。根据我的调查,这是由于数据的高速度。 我在不同的线程上读取com端口,
我试图做一些非常简单的东西,按钮计数器,有一个按钮在我的HTML-php当我点击它我发送数据'按'到我的arduino和它使led闪烁,到目前为止,还不错,但然后我想发送信号,当我在arduino中按下按钮,我想让我的php读取字符串"点击次数: N"的串行端口,N是从arduio的推送计数。 这里的问题是,在arduino串行我可以看到他字符串,一切正常,但在PHP我做