在Arduino中获取ASCII表


在本文中,我们将逐步讲解Arduino中的示例代码,该代码有助于在串口监视器输出中生成ASCII表。供您参考,这就是ASCII表的样子:http://www.asciitable.com/

它包含字符,后跟其十进制、十六进制的ASCII码,有时甚至还有八进制和二进制表示。在这个例子中,我们将打印出所有可打印ASCII字符的这些表示。请记住,第一个可打印的ASCII字符从数字33开始,可打印字符一直到数字126。由于我们将在串口监视器上打印ASCII表,因此我们只关注可打印字符。

要访问此示例,请转到**文件 → 示例 → 04 通信 → ASCII 表**。

让我们开始逐步讲解这段代码。如您所见,我们首先在setup中初始化Serial,然后等待Serial端口连接。之后,我们只需打印草图的标题。

void setup() {
   //Initialize serial and wait for port to open:
   Serial.begin(9600);
   while (!Serial) {
      ; // wait for serial port to connect. Needed for native USB port only
   }
   // prints title with ending line break
   Serial.println("ASCII Table ~ Character Map");
}

接下来,定义全局变量thisByte。它被初始化为33。记住33等于第一个可打印的ASCII字符。

int thisByte = 33;

在循环中,我们首先以字符的形式打印thisByte的值(使用Serial.write()),然后打印其十进制值(使用Serial.print()),然后使用Serial.print()中的格式说明符打印其十六进制、八进制和二进制表示。

之后,我们将thisByte的值递增,直到达到126的值,之后进入无限循环,基本上什么也不做。

示例

void loop() {
   // prints value unaltered, i.e. the raw binary version of the byte.
   // The Serial Monitor interprets all bytes as ASCII, so 33, the first number will show up as '!'
   Serial.write(thisByte);

   Serial.print(", dec: ");
   // prints value as string as an ASCII-encoded decimal (base 10).
   // Decimal is the default format for Serial.print() and Serial.println(),
   // so no modifier is needed:
   Serial.print(thisByte);
   // But you can declare the modifier for decimal if you want to.
   // this also works if you uncomment it:
   // Serial.print(thisByte, DEC);

   Serial.print(", hex: ");
   // prints value as string in hexadecimal (base 16):
   Serial.print(thisByte, HEX);

   Serial.print(", oct: ");
   // prints value as string in octal (base 8);
   Serial.print(thisByte, OCT);
   Serial.print(", bin: ");
   // prints value as string in binary (base 2) also prints ending line break:
   Serial.println(thisByte, BIN);

   // if printed last visible character '~' or 126, stop:
   if (thisByte == 126) { // you could also use if (thisByte == '~')
   {
      // This loop loops forever and does nothing
      while (true) {
         continue;
      }
   }
   // go on to the next character
   thisByte++;
}

输出

串口监视器输出如下所示:

更新于:2021年5月29日

2K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告