用户工具

站点工具


learing:examples:character_analysis

差别

这里会显示出您选择的修订版和当前版本之间的差别。


前一修订版
learing:examples:character_analysis [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +====== String Character Analysis(字符串的字符解析) ======
  
 +这个例子中我们使用运算符来分辨字符类型。这对于检查字符是否是ASCII或者大写字母或是数字或者标点符号等很有用。可供选择的项覆盖了多种情景,下面的程序中进行演示。每一个通过IDE串口发送到控制器的字符都被程序解析,返回所有可能获取到的信息。单个字符可能触发几种情况,所以你可能从一个输入中得到多个答案。
 +
 +可用的运算符有
 +
 +<code cpp>isAlphaNumeric()
 +文字数字
 +isAlpha()
 +字母
 +isAscii()
 +ASCII码
 +isWhitespace()
 +空格符
 +isControl()
 +控制符
 +isDigit()
 +数字
 +isGraph()
 +非空格符
 +isLowerCase()
 +小写字母
 +isPrintable()
 +可打印的
 +isPunct()
 +标点符号
 +isSpace()
 +空格符
 +isUpperCase()
 +大写字母
 +isHexadecimalDigit()
 +有效的十六进制数字 (例如 0 - 9, a - F, or A - F)</code>
 +===== 硬件要求 =====
 +
 +|OCROBOT控制器|
 +|USB线|
 +
 +此例程没有电路图,用USB线把控制器连到电脑并且打开IDE的串口监视器就行了,
 +===== ALPHA MEGA328-U核心 =====
 +
 +==== 硬件 ====
 +  * [[ocrobot:alpha:mega328-u:main|ALPHA MEGA328-U]]
 +
 +==== 搭建电路 ====
 +
 +  - USB线连接计算机与ALPHA MEGA328-U。
 +
 +===== 代码 =====
 +
 +打开串口监视器,一次输入一个字符,发送,查看结果。
 +
 +<code cpp>/*
 +  Character analysis operators
 +*/
 +
 +void setup() {
 +  Serial.begin(9600);  // 打开串口
 +  while (!Serial) {
 +    ; //等待串口连接,只有使用32U4核心的控制器需要这一步
 +  }
 +  Serial.println("send any byte and I'll tell you everything I can about it");  //介绍:
 +  Serial.println();
 +}
 +
 +void loop() {
 +   if (Serial.available() > 0) { // 接收数据:
 +    int thisChar = Serial.read();
 +    Serial.print("You sent me: \'"); // 显示发送的字符:
 +    Serial.write(thisChar);
 +    Serial.print("\'  ASCII Value: ");
 +    Serial.println(thisChar);
 +    if (isAlphaNumeric(thisChar)) {   // 分析发送的字符:
 +      Serial.println("it's alphanumeric");
 +    }
 +    if (isAlpha(thisChar)) {
 +      Serial.println("it's alphabetic");
 +    }
 +    if (isAscii(thisChar)) {
 +      Serial.println("it's ASCII");
 +    }
 +    if (isWhitespace(thisChar)) {
 +      Serial.println("it's whitespace");
 +    }
 +    if (isControl(thisChar)) {
 +      Serial.println("it's a control character");
 +    }
 +    if (isDigit(thisChar)) {
 +      Serial.println("it's a numeric digit");
 +    }
 +    if (isGraph(thisChar)) {
 +      Serial.println("it's a printable character that's not whitespace");
 +    }
 +    if (isLowerCase(thisChar)) {
 +      Serial.println("it's lower case");
 +    }
 +    if (isPrintable(thisChar)) {
 +      Serial.println("it's printable");
 +    }
 +    if (isPunct(thisChar)) {
 +      Serial.println("it's punctuation");
 +    }
 +    if (isSpace(thisChar)) {
 +      Serial.println("it's a space character");
 +    }
 +    if (isUpperCase(thisChar)) {
 +      Serial.println("it's upper case");
 +    }
 +    if (isHexadecimalDigit(thisChar)) {
 +      Serial.println("it's a valid hexadecimaldigit (i.e. 0 - 9, a - F, or A - F)");
 +    }
 +    Serial.println();    // 加几个空格,换另一种类型
 +    Serial.println("Give me another byte:");
 +    Serial.println();
 +  }
 +}</code>