当前位置:  编程技术>移动开发
本页文章导读:
    ▪gb2312 变换 UTF-8 出现?号        gb2312 转换 UTF-8 出现?号 String message = "一条 最新 赠送 。!";message = new String(message.getBytes("utf-8"));System.out.println(message); 我转出来是 “涓?潯 鏈?柊銆?禒閫併?銆傦紒”请问,为什么转换.........
    ▪ 奉献 蓝色精灵游戏源代码        贡献 蓝色精灵游戏源代码 这个是以前很流行的PC游戏 源代码 ,大家可以 下载 下来看吧3GEYEc;R~2O{!{i!De 5]p-gQ,H:D"\3 看看这些图。3GEYE)s S9e+m1\}'q /z}`+^-jF\3 3GEYE9i�o#[3VaP2J!S 3GEYEf1{}-_qz&a.........
    ▪ 经过串口让普通的电路开关控制你的java程序       通过串口让普通的电路开关控制你的java程序 注:本文为原创文章,转载时请注明转载地址。 在上篇文章中介绍了通过串口向LED液晶显示屏发送数据的方式,同样,通过串口也可以让你的.........

[1]gb2312 变换 UTF-8 出现?号
    来源: 互联网  发布时间: 2014-02-18
gb2312 转换 UTF-8 出现?号
String message = "一条 最新 赠送 。!";
message = new String(message.getBytes("utf-8"));
System.out.println(message);

我转出来是 “涓?潯 鏈?柊銆?禒閫併?銆傦紒”
请问,为什么转换的时候出现问号,正确的应该怎么转呢?

    
[2] 奉献 蓝色精灵游戏源代码
    来源: 互联网  发布时间: 2014-02-18
贡献 蓝色精灵游戏源代码

这个是以前很流行的PC游戏 源代码 ,大家可以 下载 下来看吧3GEYEc;R~2O{!{i!De
5]p-gQ,H:D"\3 看看这些图。3GEYE)s S9e+m1\}'q
/z}`+^-jF\3 3GEYE9i�o#[3VaP2J!S
3GEYEf1{}-_qz&gA

Ut$d}Xv�@TH8U5{3
'g5yqwOGf&b3 源代码下载到http://www.3geye.net/?3/viewspace-3431 3GEYE9{k;hso


    
[3] 经过串口让普通的电路开关控制你的java程序
    来源: 互联网  发布时间: 2014-02-18
通过串口让普通的电路开关控制你的java程序

注:本文为原创文章,转载时请注明转载地址。

在上篇文章中介绍了通过串口向LED液晶显示屏发送数据的方式,同样,通过串口也可以让你的程序来捕捉外部设备(开关类设备)触发的事件或者从外部设备读取数据(传感器等)。 下面介绍一个通过脚踏开关来控制应用程序操作的例子。

脚踏开关—分为两种:一种就是日常生活中最普通的电路开关,通过电路的闭合来控制 电路的接通;另一种就是在开关中加入一个上位机,其他的都一样。

功能:当脚踏开关踩下(电路接通)时,触发你的程序中的一个动作,比如启动/停止一项任务。

接线图:
将开关的两根线分别接在串口的输入、输出(2、3号)引脚,如图:


根据脚踏开关的两种类型采用不同的方式

1.带上位机的
该方式比较简单,当开关的闭合触发事件时上位机会通过串口向pc发送数据,在程序中采用串口的事件监听模型即可进行事件的捕捉,主要代码如下:

try { 
serialPort.addEventListener(new SerialPortEventListener() { 
public void serialEvent(SerialPortEvent serialPortEvent) { 
//在此进行事件捕捉处理 
} 
}); 
} catch (TooManyListenersException e) { 
serialPort.close(); 
throw new SerialConnectionException("too many listeners added"); 
} 

 



2.普通的开关
此种方式由于没有上位机主动向pc发送数据,所以不能再采用上述方式来进行捕获事件,解决的方式是:让一个单独的线程每隔一定的时间向串口发送数据,然后让另一个线程不停的在串口接收数据,如果能够接受到数据说明开关闭合,否则说明开关断开。

相关程序代码:

public class Demo {
    static SwitchControl control;
    private InputStream in;
    private OutputStream os;
    private SerialPort serialPort;
    boolean inited = false;
    boolean stoped = false;
    long beg = System.currentTimeMillis();

    public boolean init() {
        if (inited) {
            return true;
        }
        try {
            CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("COM1");
            serialPort = (SerialPort) portId.open("SerialBean", 4000);
            serialPort.setSerialPortParams(9600,
                    SerialPort.DATABITS_8,
                    SerialPort.STOPBITS_1,
                    SerialPort.PARITY_NONE);
            serialPort.setDTR(true);
            in = serialPort.getInputStream();
            os = serialPort.getOutputStream();
            inited = true;
           
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }


        return true;
    }


    public void writePort(int s) {
        try {
            os.write(s);
            os.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public void start() {
        Thread send = new Thread(new SendData());
        Thread recive = new Thread(new ReceiveData());
        send.start();
        recive.start();
    }


    public void close() {
        stoped = true;
        try {
            Thread.sleep(20);
            if (in != null) {
                in.close();
            }

            if (os != null) {
                os.close();
            }
            if (serialPort != null)
                serialPort.close();


        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    class ReceiveData implements Runnable {

        public void run() {
            while (true) {
                if (stoped) {
                    break;
                }
                byte[] b = new byte[10];
                try {
                    if (in.read(b) == 0) {
                        continue;
                    }
                    long end = System.currentTimeMillis();
                    //处去噪声影响,通过连续两次接受到数据的时间差来判断是一次长时间的踩踏还是连续2次或者多次踩踏
                    if (end - beg > 20) {
                        Thread tt = new Thread(new Task());
                        tt.start();
                    }
                    Thread.sleep(10);
                    beg = System.currentTimeMillis();
                } catch (Exception e) {
                    break;
                }

            }
        }
    }

    class SendData implements Runnable {
        public void run() {
            while (true) {
                if (stoped) {
                    break;
                }
                writePort(0);
                try {
                    Thread.sleep(5);
                } catch (Exception e) {
                    e.printStackTrace();
                    break;
                }
            }
        }
    }

    class Task implements Runnable {

        public void run() {
            // 相关任务
            System.out.println("捕捉到事件.............");
        }
    }

    public static void main(String[] args) {
        Demo demo = new Demo();
        if (!demo.init()) {
            System.err.println("初始化串口失败!");
            return;
        }

        demo.start();
    }
}

 

 

1 楼 mlhorizon 2008-05-06  
还是带点编码解码的好!!
防止干扰,同时能实现的功能也多一点!!
2 楼 yangyiqian 2008-05-06  
好东东,顶!
3 楼 Unmi 2008-05-08  
我们要创新,但是要有价值的创新

就说这东西的实际意义在哪里,现在PC上在慢慢淘汰 COM,某些仪器设备保留下来。
4 楼 walsece 2008-05-09  
慢慢淘汰并不代表无用武之地,只不过你不经常接触相应的行业而已,其实现在很多方面都还在用com,这是我在做软件中遇到的实实在在的需求,虽然目前大部分都在使用usb,但是从编程的角度而言两者之间没有太大的区别。

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3