<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    夢幻之旅

    DEBUG - 天道酬勤

       :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
    這個是一個JAVA代碼的解決方案,但我測試后發(fā)現(xiàn)讀不到數(shù)據(jù),不知道那里有問題,現(xiàn)在還沒有解決。
    package com;    

    /*    
    程序文件名稱:ReadComm.java    
    功能:從串行口COM1中接收數(shù)據(jù)    
    */
        
    import java.awt.*;    
    import java.awt.event.*;    
    import java.io.*;    
    import java.util.*;    
    import javax.comm.*;    

    class R_Frame extends Frame implements Runnable,ActionListener,SerialPortEventListener    
        {    
    /* 檢測系統(tǒng)中可用的通訊端口類 */    
        static CommPortIdentifier portId;    
    /* Enumeration 為枚舉型類,在java.util中 */    
        static Enumeration portList;    
        InputStream inputStream;    
    /* 聲明RS-232串行端口的成員變量 */    
        SerialPort serialPort;    
        Thread readThread;    
        String str="";    
        TextField out_message=new TextField("上面文本框顯示接收到的數(shù)據(jù)");    
        TextArea in_message=new TextArea();    
        Button btnOpen=new Button("打開串口");    
    /*建立窗體*/    
        R_Frame()    
        {    
        super("串口接收數(shù)據(jù)");    
        setSize(200,200);    
        setVisible(true);    
        btnOpen.addActionListener(this);    
        add(out_message,"South");    
        add(in_message,"Center");    
        add(btnOpen,"North");    
        
            
            
        /*獲取系統(tǒng)中所有的通訊端口 */    
            portList=CommPortIdentifier.getPortIdentifiers();    
                /* 用循環(huán)結構找出串口 */    
            while (portList.hasMoreElements()){    
            /*強制轉(zhuǎn)換為通訊端口類型*/    
            portId=(CommPortIdentifier)portList.nextElement();    
            if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){    
                if (portId.getName().equals("COM1")) {    
                    try {    
                serialPort = (SerialPort) portId.open("ReadComm", 2000);    
                out_message.setText("已打開端口COM1 ,正在接收數(shù)據(jù)..... ");    
                }    
            catch (PortInUseException e) { }    

            /*設置串口監(jiān)聽器*/    
            try {    
            serialPort.addEventListener(this);    
            }    
            catch (TooManyListenersException e) { }    
            /* 偵聽到串口有數(shù)據(jù),觸發(fā)串口事件*/    
            serialPort.notifyOnDataAvailable(true);    
            } //if end    
            } //if end    
            } //while end    
            readThread = new Thread(this);    
            readThread.start(); //線程負責每接收一次數(shù)據(jù)休眠20秒鐘    
            } //R_Frame() end    


        
        /*點擊按扭所觸發(fā)的事件:打開串口,并監(jiān)聽串口. */    
    public void actionPerformed(ActionEvent event)    
        {    
            /*獲取系統(tǒng)中所有的通訊端口 */    
            portList=CommPortIdentifier.getPortIdentifiers();    
            /* 用循環(huán)結構找出串口 */    
            while (portList.hasMoreElements()){    
            /*強制轉(zhuǎn)換為通訊端口類型*/    
            portId=(CommPortIdentifier)portList.nextElement();    
            if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){    
            if (portId.getName().equals("COM1")) {    
            try {    
            serialPort = (SerialPort) portId.open("ReadComm", 2000);    
            out_message.setText("已打開端口COM1 ,正在接收數(shù)據(jù)..... ");    
            }    
            catch (PortInUseException e) { }    

        /*設置串口監(jiān)聽器*/    
            try {    
            serialPort.addEventListener(this);    
            }    
            catch (TooManyListenersException e) { }    
        /* 偵聽到串口有數(shù)據(jù),觸發(fā)串口事件*/    
            serialPort.notifyOnDataAvailable(true);    
            } //if end    
            } //if end    
            } //while end    
            readThread = new Thread(this);    
            readThread.start(); //線程負責每接收一次數(shù)據(jù)休眠20秒鐘    
            } //actionPerformed() end    

            /*接收數(shù)據(jù)后休眠20秒鐘*/    
    public void run() {    
            try {    
            Thread.sleep(20000);    
            }    
        catch (InterruptedException e) { }    
            } //run() end    

            /*串口監(jiān)聽器觸發(fā)的事件,設置串口通訊參數(shù),讀取數(shù)據(jù)并寫到文本區(qū)中*/    
    public void serialEvent(SerialPortEvent event) {    
        /*設置串口通訊參數(shù):波特率、數(shù)據(jù)位、停止位、奇偶校驗*/    
            try {    
            serialPort.setSerialPortParams(9600,    
            SerialPort.DATABITS_8,    
            SerialPort.STOPBITS_1,    
            SerialPort.PARITY_NONE);    
            }    
            catch (UnsupportedCommOperationException e) {}    
                byte[] readBuffer = new byte[20];    
            try {    
                inputStream = serialPort.getInputStream();    
            }    
            catch (IOException e){    
    }    
            try {    

            while (inputStream.available() > 0)    
            {    
                int numBytes = inputStream.read(readBuffer);    
                    } //while end    
                str=new String(readBuffer);    
            /*接收到的數(shù)據(jù)存放到文本區(qū)中*/    
                in_message.append(str+"\n");    
                }    
                catch (IOException e){    
                }    
                } //serialEvent() end    
            } //類R_Frame end    

            public class ReadComm    
            {    
    public static void main(String args[])    
            {    
            /* 實例化接收串口數(shù)據(jù)的窗體類 */    
            R_Frame R_win=new R_Frame();    
            /* 定義窗體適配器的關閉按鈕功能 */    
            R_win.addWindowListener(new WindowAdapter()    
            {    
            public void windowClosing(WindowEvent e)    
            {    
            System.exit(0);    
            }    
        });    
            R_win.pack();    
        }    
    }    
     
     
     
    這個是在web頁面上的實現(xiàn),修改了下現(xiàn)在可以讀到數(shù)據(jù),但這個需要注冊MSCOMM組件,還算比較理想吧!
    <%@ page contentType="text/html; charset=gb2312" language="java"    %>    
    <html>    
    <head>    
    <title>JavaScript MSCOMM32.OCX </title>    

    <SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>    
    //重寫 mscomm 控件的唯一事件處理代碼    
    function MSComm1_OnComm()    
    {    
    var len=0;    
    if(MSComm1.CommEvent==1)//如果是發(fā)送事件    
    {    
        window.alert("請讀條碼");//這句正常,說明發(fā)送成功了    
    }    
    else if(MSComm1.CommEvent==2)//如果是接收事件    
    {    
            document.form1.txtReceive.value=document.form1.txtReceive.value + MSComm1.Input;    
    }    

    }    
    </SCRIPT>    

    <SCRIPT LANGUAGE=javascript FOR=MSComm1 EVENT=OnComm>    
    // MSComm1控件每遇到 OnComm 事件就調(diào)用 MSComm1_OnComm()函數(shù)    
    MSComm1_OnComm()    
    </SCRIPT>    


    <script language="JavaScript" type="text/JavaScript">    
    //打開端口并發(fā)送命令程序    
    function OpenPort()    
    {    
    if(MSComm1.PortOpen==false)    
    {    
    MSComm1.PortOpen=true;    
    MSComm1.Output="R";//發(fā)送命令    
    //window.alert("成功發(fā)出命令!");
    }    
    else    
    {    
        window.alert ("已經(jīng)開始接收數(shù)據(jù)!");    
    }    
    }    
    </script>    

    </head>    
    <OBJECT CLASSID="clsid:648A5600-2C6E-101B-82B6-000000000014" id=MSComm1 codebase="MSCOMM32.OCX" type="application/x-oleobject"    
    style="LEFT: 54px; TOP: 14px" >    
    <PARAM NAME="CommPort" VALUE="1">    
    <PARAM NAME="DTREnable" VALUE="1">    
    <PARAM NAME="Handshaking" VALUE="0">    
    <PARAM NAME="InBufferSize" VALUE="1024">    
    <PARAM NAME="InputLen" VALUE="0">    
    <PARAM NAME="NullDiscard" VALUE="0">    
    <PARAM NAME="OutBufferSize" VALUE="512">    
    <PARAM NAME="ParityReplace" VALUE="?">    
    <PARAM NAME="RThreshold" VALUE="1">    
    <PARAM NAME="RTSEnable" VALUE="1">    
    <PARAM NAME="SThreshold" VALUE="2">    
    <PARAM NAME="EOFEnable" VALUE="0">    
    <PARAM NAME="InputMode" VALUE="0">    

    <PARAM NAME="DataBits" VALUE="8">    
    <PARAM NAME="StopBits" VALUE="1">    
    <PARAM NAME="BaudRate" VALUE="9600">    
    <PARAM NAME="Settings" VALUE="9600,N,8,1">    
    </OBJECT>    

    <body>    
    <form name="form1">    
    <input type="button" name="Submit" value="提交" onClick="OpenPort()">    
    <input type="text" name="txtReceive" size=50 value="">    
    </form>    
    </body>    
    </html>
    posted on 2009-10-28 16:28 HUIKK 閱讀(522) 評論(0)  編輯  收藏 所屬分類: TOOL
    主站蜘蛛池模板: 朝桐光亚洲专区在线中文字幕 | 亚洲一区二区三区深夜天堂| 一级特黄色毛片免费看| 性感美女视频免费网站午夜| 亚洲国产中文在线二区三区免| ww在线观视频免费观看| 中文字幕在线观看亚洲| 日本黄网站动漫视频免费| 亚洲妓女综合网99| 丁香花在线观看免费观看| 亚洲欧美日韩久久精品| 又大又硬又爽免费视频| 国产亚洲女在线线精品| 亚洲裸男gv网站| 免费国产午夜高清在线视频| 亚洲s色大片在线观看| 日韩在线播放全免费| jiz zz在亚洲| 亚洲精品A在线观看| 在线免费播放一级毛片| 亚洲最新视频在线观看| 99久久综合国产精品免费| 色综合久久精品亚洲国产| 亚洲国产精品尤物yw在线| 亚洲精品视频免费| 老色鬼久久亚洲AV综合| 台湾一级毛片永久免费| 特级毛片aaaa级毛片免费| 亚洲精品无码mv在线观看网站| 3344永久在线观看视频免费首页 | 国产黄色片免费看| 亚洲视频在线观看网址| 爽爽日本在线视频免费| 亚洲av午夜精品无码专区| 西西大胆无码视频免费| 极品色天使在线婷婷天堂亚洲| 亚洲av无码乱码国产精品fc2| 亚色九九九全国免费视频| 免费人人潮人人爽一区二区| 亚洲AV无码国产精品色午友在线| 美女视频黄是免费的网址|