【开运源码】【分享源码有哪些】【超车数据源码】串口编程调试精灵源码_串口编程调试精灵源码怎么用

时间:2024-11-14 13:49:01 编辑:瑜伽会所网站源码 来源:吃大肉指标公式源码

1.JAVA课程设计 彩票号码产生器
2.如何使用串口调试助手

串口编程调试精灵源码_串口编程调试精灵源码怎么用

JAVA课程设计 彩票号码产生器

       æˆ‘这有个超级大乐透的代码在控制台输出的 还没有统计奖项概率 希望可以帮到你 :1.先说下思路 a.声明2个数组和2个变量数组分别放前区的个数和后区的个数,串口串口变量分别为这两个数组的长度 b.首先随机获得前区的5个号码:Random .nextInt(前区长度的变量) 获得随机数,找到第一个数组中下标为这个随机数的元素,取出放在变量中. 这   儿可以判断格式 的.可以用正则表达式判断是否为各位数,如果是的话就补全0.然后移除数组中这个元素.当然存储数组的变量要减去1的然后重复  以上的4次这样就获得了1-中5个不重复的数字. c.同上. 2.附代码SuperJoyful.javaimport java.util.ArrayList;

       import java.util.Arrays;

       import java.util.List;

       import java.util.Random;

       import java.util.regex.Matcher;

       import java.util.regex.Pattern;/

**

        * 以下是模拟一个超级大乐透随机选号功能,严格按概率生成

        * @author Jack

       

*

        */

       public class SuperJoyful {

        // 声明一个List用于存放前区号码

        private List<Integer> objFrontList = new ArrayList<Integer>();

        // 声明一个List用于存放后区号码

        private List<Integer> objBackList = new ArrayList<Integer>();

        // 声明一个正则表达式对象,用于匹配是否是一位数字,用于输出时验证

        Pattern objP = Pattern.compile("\\d");

        // 所要操作的字符串

        Matcher objM = null;

        String[] Front = new String[5];

        String[] Back = new String[2]; // 初始化摇奖号码

        public void init() {

        for (int i = 1; i <= ; i++) {

        objFrontList.add(i);

        }

        for (int i = 1; i <= ; i++) {

        objBackList.add(i);

        }

        } // 开始摇奖

        public void beginLottery() {

        Random objRandom = new Random();

        int nFrontCount = ; // 前区号码总数

        int nBackCount = ; // 后区号码总数 // 摇奖前先清空LIST,再初始化

        objFrontList.clear();

        //System.out.println(objFrontList);

        objBackList.clear();

        //System.out.println(objBackList);

        this.init();

        /

**

        * 产生5个前区号码

        */

        for (int i = 0; i < 5; i++) {

        //System.out.println("nFrontCount:"+nFrontCount);

        // 初始时有个前区号,随机产生一个索引

        int nIndex = objRandom.nextInt(nFrontCount);

        // 将选出的号码暂时存放在变量中,带正则表达式验证

        int nTemp = objFrontList.get(nIndex);

        String strTemp = new Integer(nTemp).toString();

        // 将获得的号码与正则表达式匹配

        objM = objP.matcher(strTemp);

        boolean flag = objM.matches();

        // 如果是一位数,则在前面补零

        if (flag) {

        Front[i] = ("0" + strTemp + " ");

        } else {

        Front[i] = (strTemp + " ");

        }

        // 删除LIST中该索引处的号码,因为选出一个就不再放回

        objFrontList.remove(nIndex);

        // 号码总数减少一个

        nFrontCount--;

        }

        Arrays.sort(Front);

        for (int n = 0; n < Front.length; n++) {

        System.out.print(Front[n] + "\t");

        }

        System.out.print("+ ");

        /

**

        * 产生2个后区号码

        */

        for (int i = 0; i < 2; i++) {

        //System.out.println("nBackCount:"+nBackCount);

        // 初始时有个后区号,随机产生一个索引

        int nIndex = objRandom.nextInt(nBackCount);

        // 将选出的号码暂时存放在变量中,带正则表达式验证

        int nTemp = objBackList.get(nIndex);

        String strTemp = new Integer(nTemp).toString();

        // 将获得的号码与正则表达式匹配

        objM = objP.matcher(strTemp);

        boolean flag = objM.matches();

        // 如果是一位数,则在前面补零

        if (flag) {

        Back[i] = ("0" + strTemp + " ");

        } else {

        Back[i] = (strTemp + " ");

        }

        // 删除LIST中该索引处的号码,因为选出一个就不再放回

        objBackList.remove(nIndex);

       // for(int n = 0; n<objBackList.size();n++){

       // System.out.println("objBackList:"+objBackList.get( n ));

       // }

        // 号码总数减少一个

        nBackCount--;

        }

        Arrays.sort(Back);

        for (int n = 0; n < Back.length; n++) {

        System.out.print(Back[n] + "\t");

        }

        // 产生一注后回车

        System.out.println("");

        } // 按要求输出多少注彩票

        public void outPutLottery(int vnCount) {

        for (int i = 0; i < vnCount; i++) {

        this.beginLottery();

        }

        } /

**

        * @param args

        */

        public static void main(String[] args) {

        SuperJoyful objSJ = new SuperJoyful();

        EnterConsole objEC = new EnterConsole();

        // 声明一个正则表达式对象,用于匹配是否是数字

        Pattern objP = Pattern.compile("\\d{ 1,}");

        // 所要操作的字符串

        Matcher objM = null;

        // 接收控制台输入

        String objTemp = (String) objEC.printConsole();

        //String strTemp = (String)objTemp;

        objM = objP.matcher(objTemp);

        boolean flag = objM.matches();

        int nTemp = 0;

        if (flag) {

        nTemp = new Integer(objTemp);

        } else {

        System.out.println("对不起,只能输入数字!");

        }

        objSJ.outPutLottery(nTemp);

        }

       }EnterConsole.javaimport java.io.BufferedReader;

       import java.io.IOException;

       import java.io.InputStreamReader;

       public class EnterConsole

       {

        public Object printConsole(){

        System.out.print("请输入你要随机选取多少注,确认回车即可:");

        BufferedReader objBR = new BufferedReader(new InputStreamReader(System.in));

        String strValue = null;

        try

        {

        strValue = (String)objBR.readLine();

        }

        catch ( IOException e )

        {

        // TODO Auto-generated catch block

        e.printStackTrace();

        }

        return strValue;

        }

       }

如何使用串口调试助手

       串口通信基本接线方法

       --------------------------------------------------------------------------------

       目前较为常用的串口有9针串口(DB9)和针串口(DB),通信距离较近时(<m),编程编程可以用电缆线直接连接标准RS端口(RS,调试调试RS较远),若距离较远,精灵精灵需附加调制解调器(MODEM)。源码源码用最为简单且常用的串口串口开运源码是三线制接法,即地、编程编程接收数据和发送数据三脚相连,调试调试本文只涉及到最为基本的精灵精灵接法,且直接用RS相连。源码源码用

       1.DB9和DB的串口串口常用信号脚说明

       9针串口(DB9) 针串口(DB)

       针号 功能说明 缩写 针号 功能说明 缩写

       1 数据载波检测 DCD 8 数据载波检测 DCD

       2 接收数据 RXD 3 接收数据 RXD

       3 发送数据 TXD 2 发送数据 TXD

       4 数据终端准备 DTR 数据终端准备 DTR

       5 信号地 GND 7 信号地 GND

       6 数据设备准备好 DSR 6 数据准备好 DSR

       7 请求发送 RTS 4 请求发送 RTS

       8 清除发送 CTS 5 清除发送 CTS

       9 振铃指示 DELL 振铃指示 DELL

       2.RSC串口通信接线方法(三线制)

       首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的编程编程接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连

       · 同一个串口的调试调试接收脚和发送脚直接用线相连 对9针串口和针串口,均是精灵精灵2与3直接相连;

       · 两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口)

       上面表格是对微机标准串行口而言的,还有许多非标准设备,源码源码用如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,分享源码有哪些彼此交叉,信号地对应相接,就能百战百胜。

       3.串口调试中要注意的几点:

       串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果; 强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。

       单工、半双工和全双工的定义

       如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。

       如果在任意时刻,信息既可由A传到B,超车数据源码又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。

       如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。

       电话线就是二线全双工信道。 由于采用了回波抵消技术,双向的传输信号不致混淆不清。双工信道有时也将收、发信道分开,采用分离的线路或频带传输相反方向的信号,如回线传输。

       奇偶校验

       串行数据在传输过程中,由于干扰可能引起信息的出错,例如,源码资本创投传输字符‘E’,其各位为:

       ,=H

       D7 D0

       由于干扰,可能使位变为1,这种情况,我们称为出现了“误码”。我们把如何发现传输中的错误,叫“检错”。发现错误后,如何消除错误,叫“纠错”。

       最简单的检错方法是“奇偶校验”,即在传送字符的各位之外,再传送1位奇/偶校验位。可采用奇校验或偶校验。

       奇校验:所有传送的真正的拐点源码数位(含字符的各数位和校验位)中,“1”的个数为奇数,如:

       1 ,

       0 ,

       偶校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为偶数,如:

       1 ,

       0 ,

       奇偶校验能够检测出信息传输过程中的部分误码(1位误码能检出,2位及2位以上误码不能检出),同时,它不能纠错。在发现错误后,只能要求重发。但由于其实现简单,仍得到了广泛使用。

       有些检错方法,具有自动纠错能力。如循环冗余码(CRC)检错等。

       串口通讯流控制

       我们在串行通讯处理中,常常看到RTS/CTS和XON/XOFF这两个选项,这就是两个流控制的选项,目前流控制主要应用于调制解调器的数据通讯中,但对普通RS编程,了解一点这方面的知识是有好处的。那么,流控制在串行通讯中有何作用,在编制串行通讯程序怎样应用呢?这里我们就来谈谈这个问题。

       1.流控制在串行通讯中的作用

       这里讲到的“流”,当然指的是数据流。数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。现在我们在网络上通过MODEM进行数据传输,这个问题就尤为突出。流控制能解决这个问题,当接收端数据处理不过来时,就发出“不再接收”的信号,发送端就停止发送,直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,防止数据的丢失。 PC机中常用的两种流控制是硬件流控制(包括RTS/CTS、DTR/CTS等)和软件流控制XON/XOFF(继续/停止),下面分别说明。

       2.硬件流控制

       硬件流控制常用的有RTS/CTS流控制和DTR/DSR(数据终端就绪/数据设置就绪)流控制。

       硬件流控制必须将相应的电缆线连上,用RTS/CTS(请求发送/清除发送)流控制时,应将通讯两端的RTS、CTS线对应相连,数据终端设备(如计算机)使用RTS来起始调制解调器或其它数据通讯设备的数据流,而数据通讯设备(如调制解调器)则用CTS来起动和暂停来自计算机的数据流。这种硬件握手方式的过程为:我们在编程时根据接收端缓冲区大小设置一个高位标志(可为缓冲区大小的%)和一个低位标志(可为缓冲区大小的%),当缓冲区内数据量达到高位时,我们在接收端将CTS线置低电平(送逻辑0),当发送端的程序检测到CTS为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将CTS置高电平。RTS则用来标明接收设备有没有准备好接收数据。

       常用的流控制还有还有DTR/DSR(数据终端就绪/数据设置就绪)。我们在此不再详述。由于流控制的多样性,我个人认为,当软件里用了流控制时,应做详细的说明,如何接线,如何应用。

       3.软件流控制

       由于电缆线的限制,我们在普通的控制通讯中一般不用硬件流控制,而用软件流控制。一般通过XON/XOFF来实现软件流控制。常用方法是:当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出XOFF字符(十进制的或Control-S,设备编程说明书应该有详细阐述),发送端收到XOFF字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出XON字符(十进制的或Control-Q),发送端收到XON字符后就立即开始发送数据。一般可以从设备配套源程序中找到发送的是什么字符。

       应该注意,若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有这个问题。

       --

       VB示例程序MSComm演示了如何使用该控件开发通讯软件

       --

       /vbasic.shtml

       --

       VB有一个例子在Samples\CompTool\Mscomm中。你可以利用这个例子来学习串口编程。

       打开串口先设置CommPort属性(端口号),使用PortOpen=True就可以了。

       串口数据保存在MSComm的Input属性中。你可以使用下面的代码:

       Dim v As Variant

       v = MSComm1.Input

       For i = 0 To MSComm1.InBufferCount - 1

       Debug.Print v(i)

       Next