Comm.Output=字符串或byte
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),和布克賽爾蒙古企業(yè)網(wǎng)站建設(shè),和布克賽爾蒙古品牌網(wǎng)站建設(shè),網(wǎng)站定制,和布克賽爾蒙古網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,和布克賽爾蒙古網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
如果是可見字符,則可以直接輸出字符串,如Comm.Output="hello"
不然得用byte(數(shù)組),如
Comm.CommPort = 3 '...使用Com3口
Comm.Settings = "57600,n,8,1" '對(duì)串口通訊的相關(guān)參數(shù)。包括串口通訊的比特率,奇偶校驗(yàn),數(shù)據(jù)位長(zhǎng)度、停止位等。其默認(rèn)值 是“9600,N,8,1”,表示串口比特率是9600bit/s,不作奇偶校驗(yàn),8位數(shù)據(jù)位,1個(gè)停止位。
Comm.OutBufferSize = 1024
If Comm.PortOpen = False Then
Comm.PortOpen = True '...打開串口
End If
Comm.OutBufferCount = 0 '...清空輸出寄存器
Dim buffer(6) as Byte
buffer(0) = 255
buffer(1) = 1
buffer(2) = 0
buffer(3) = 0
buffer(4) = 0
buffer(5) = 0
buffer(6) = 1
Comm.Output = buffer
Comm.PortOpen = False
上面確實(shí)是VB的代碼。
在VBS中,沒有類型,所以聲明數(shù)組與初始化可能為:
Dim buffer(6)
buffer(0) = CByte(255)
...
我沒試過,不一定正確喲。
需要一個(gè)包 comm.jar
需要一個(gè)配置文件 javax.comm.properties (工程根目錄)
(或者放在JDK里)
// 取得端口句柄
CommPortIdentifier id = CommPortIdentifier.getPortIdentifier(portName);
port = (SerialPort) id .open("SerialDemo", 30000);
port .setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
port .notifyOnDataAvailable(true);
port .notifyOnBreakInterrupt(true);
port .enableReceiveTimeout(delayTime);
讀取之類的自己寫就行了,(port .getInputStream()),完事之后別忘了關(guān)掉端口,不然下次就不能用了,只能重啟系統(tǒng)
配置文件里就一行:
Driver=com.sun.comm.Win32Driver
----------------------------------
你設(shè)個(gè)斷點(diǎn)單步調(diào)試看一下原因,那個(gè)SerialBean是你自己寫的,誰也不知道里面整啥了,單步調(diào)試就知道哪里錯(cuò)誤。
拋出異常了Exception in thread "main" java.lang.NullPointerException
at serial.SerialBean.WritePort(SerialBean.java:114)
從這里看,是在SerialBean.java的114行(函數(shù)WritePort)的一個(gè)東西,它的值是null,所以報(bào)錯(cuò)了
public static void process() {
try {
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements())
{
CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)//如果端口類型是串口則判斷名稱
{
if(portId.getName().equals("COM1")){//如果是COM1端口則退出循環(huán)
break;
}else{
portId=null;
}
}
}
SerialPort serialPort = (SerialPort)portId.open("Serial_Communication", 1000);//打開串口的超時(shí)時(shí)間為1000ms
serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);//設(shè)置串口速率為9600,數(shù)據(jù)位8位,停止位1們,奇偶校驗(yàn)無
InputStream in = serialPort.getInputStream();//得到輸入流
OutputStream out = serialPort.getOutputStream();//得到輸出流
//進(jìn)行輸入輸出操作
//操作結(jié)束后
in.close();
out.close();
serialPort.close();//關(guān)閉串口
} catch (PortInUseException e) {
e.printStackTrace();
} catch (UnsupportedCommOperationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
需要一個(gè)包 comm.jar
需要一個(gè)配置文件 javax.comm.properties (工程根目錄)
(或者放在JDK里)
// 取得端口句柄
CommPortIdentifier id = CommPortIdentifier.getPortIdentifier(portName);
port = (SerialPort) id .open("SerialDemo", 30000);
port .setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
port .notifyOnDataAvailable(true);
port .notifyOnBreakInterrupt(true);
port .enableReceiveTimeout(delayTime);
讀取之類的自己寫就行了,(port .getInputStream()),完事之后別忘了關(guān)掉端口,不然下次就不能用了,只能重啟系統(tǒng)
配置文件里就一行:
Driver=com.sun.comm.Win32Driver
----------------------------------
你設(shè)個(gè)斷點(diǎn)單步調(diào)試看一下原因,那個(gè)SerialBean是你自己寫的,誰也不知道里面整啥了,單步調(diào)試就知道哪里錯(cuò)誤。
拋出異常了Exception in thread "main" java.lang.NullPointerException
at serial.SerialBean.WritePort(SerialBean.java:114)
從這里看,是在SerialBean.java的114行(函數(shù)WritePort)的一個(gè)東西,它的值是null,所以報(bào)錯(cuò)了
本文題目:java串口發(fā)送指令代碼 java調(diào)用串口
標(biāo)題URL:http://jinyejixie.com/article34/hpcjse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、Google、電子商務(wù)、小程序開發(fā)、網(wǎng)站制作、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)