首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Arduino的jssc (serialPort.readBytes() )

使用Arduino的jssc (serialPort.readBytes() )
EN

Stack Overflow用户
提问于 2012-10-01 04:03:44
回答 2查看 9.5K关注 0票数 1

这是我的Java代码:

代码语言:javascript
复制
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jsscusbconnection;

import jssc.SerialPort;
import jssc.SerialPortEvent;
import jssc.SerialPortEventListener;
import jssc.SerialPortException;

/**
 *
 * @author Heshan
 */
public class JsscUsbConnection {

    /**
     * @param args the command line arguments
     */
    static SerialPort serialPort;

    public static void main(String[] args) {
        serialPort = new SerialPort("COM15");
        try {
            System.out.println("port open :" + serialPort.openPort());//Open port
            serialPort.setParams(SerialPort.BAUDRATE_9600,
                    SerialPort.DATABITS_8,
                    SerialPort.STOPBITS_1,
                    SerialPort.PARITY_NONE);

            int mask = SerialPort.MASK_RXCHAR + SerialPort.MASK_CTS + SerialPort.MASK_DSR;//Prepare mask
            serialPort.setEventsMask(mask);//Set mask
            serialPort.addEventListener(new SerialPortReader());//Add SerialPortEventListener
        } catch (SerialPortException ex) {
            System.out.println(ex);
        }
    }

    static class SerialPortReader implements SerialPortEventListener {

        public void serialEvent(SerialPortEvent event) {
            if (event.isRXCHAR()) {//If data is available
                //System.out.println(event.getEventValue());
                if (event.getEventValue() > 4) {//Check bytes count in the input buffer

                    //Read data, if 10 bytes available
                    try {
                        byte buffer[] = serialPort.readBytes(4);

                        System.out.println(buffer[0] + "  " + buffer[1] + "  " + buffer[2] + "  " + buffer[3]);
                    } catch (SerialPortException ex) {
                        System.out.println(ex);
                    }
                }
            } else if (event.isCTS()) {//If CTS line has changed state
                if (event.getEventValue() == 1) {//If line is ON
                    System.out.println("CTS - ON");
                } else {
                    System.out.println("CTS - OFF");
                }
            } else if (event.isDSR()) {///If DSR line has changed state
                if (event.getEventValue() == 1) {//If line is ON
                    System.out.println("DSR - ON");
                } else {
                    System.out.println("DSR - OFF");
                }
            }
        }
    }
}

这是我的Arduino代码:

代码语言:javascript
复制
int k=0;

void setup(){
    Serial.begin(9600);
}

void loop(){
    Serial.println(67,BYTE);
    Serial.println(98,BYTE);
    Serial.println(34,BYTE);
    Serial.println(108,BYTE);
    Serial.flush();
}

这是我的Java代码输出:

67 13 10 98 13 10 34 13 10 108 13 10 67 13 10 98

这些大胆的价值观是什么?我不知道这些未知的价值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-01 10:07:35

13是马车的回程。10是一个线路馈送。如果你在处理串行I/O,你应该知道这一点。9是个标签。12是表单提要。检查一下ASCII表

票数 3
EN

Stack Overflow用户

发布于 2012-10-01 19:31:51

10和13个字节是\r\n符号。println()函数的http://arduino.cc描述

将数据以可读的ASCII文本形式打印到串行端口,后面是回车>字符(ASCII 13或'\r')和换行符(ASCII 10或'\n')。此命令采用与Serial.print()相同的表单。

如果不需要这些结束行符号,可以使用print()函数或写()函数发送原始字节。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12667404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档