<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
		<id>http:///https//wiki.microduino.cn/index.php?action=history&amp;feed=atom&amp;title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%80%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E7%9A%84%E4%B8%80%E4%BA%9B%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95%2Fzh</id>
		<title>第二十一课--Microduino 串口的一些高级用法/zh - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="http:///https//wiki.microduino.cn/index.php?action=history&amp;feed=atom&amp;title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%80%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E7%9A%84%E4%B8%80%E4%BA%9B%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95%2Fzh"/>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%80%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E7%9A%84%E4%B8%80%E4%BA%9B%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95/zh&amp;action=history"/>
		<updated>2026-04-20T17:04:22Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%80%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E7%9A%84%E4%B8%80%E4%BA%9B%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95/zh&amp;diff=6483&amp;oldid=prev</id>
		<title>Radiumray9@gmail.com：/* 目的 */</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%80%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E7%9A%84%E4%B8%80%E4%BA%9B%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95/zh&amp;diff=6483&amp;oldid=prev"/>
				<updated>2014-11-25T03:40:56Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;目的&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;zh-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;2014年11月25日 (二) 03:40的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l8&quot; &gt;第8行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第8行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;本教程将向大家介绍串口的一些高级用法。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;本教程将向大家介绍串口的一些高级用法。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;出处：http://www.arduino.cn/thread-2710-1-1.html&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==设备==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==设备==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Radiumray9@gmail.com</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%80%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E7%9A%84%E4%B8%80%E4%BA%9B%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95/zh&amp;diff=6482&amp;oldid=prev</id>
		<title>Radiumray9@gmail.com：Created page with &quot; {| style=&quot;width: 800px;&quot; |- |   ==目的==  本教程将向大家介绍串口的一些高级用法。  ==设备==  {|class=&quot;wikitable&quot; |- |模块||数量||功能 |- |Microd...&quot;</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%80%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E7%9A%84%E4%B8%80%E4%BA%9B%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95/zh&amp;diff=6482&amp;oldid=prev"/>
				<updated>2014-11-25T03:27:29Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot; {| style=&amp;quot;width: 800px;&amp;quot; |- |   ==目的==  本教程将向大家介绍串口的一些高级用法。  ==设备==  {|class=&amp;quot;wikitable&amp;quot; |- |模块||数量||功能 |- |Microd...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==目的==&lt;br /&gt;
&lt;br /&gt;
本教程将向大家介绍串口的一些高级用法。&lt;br /&gt;
&lt;br /&gt;
==设备==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|模块||数量||功能&lt;br /&gt;
|-&lt;br /&gt;
|[[Microduino-Core/zh]]||1||核心板&lt;br /&gt;
|-&lt;br /&gt;
|[[Microduino-USBTTL/zh]] ||1||下载程序&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==配置串口通信数据位、校验位、停止位==&lt;br /&gt;
&lt;br /&gt;
通常我们使用'''Serial.begin(speed)'''来完成串口的初始化，这种方式，只能配置串口的波特率。&lt;br /&gt;
&lt;br /&gt;
而使用'''Serial.begin(speed, config)'''可以配置数据位、校验位、停止位等。&lt;br /&gt;
&lt;br /&gt;
例如Serial.begin(9600,SERIAL_8E2)是将串口波特率设为9600，数据位8，偶校验，停止位2。&lt;br /&gt;
&lt;br /&gt;
config可用配置如下：&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|config可选配置||数据位||校验位||停止位||  ||config可选配置||数据位||校验位||停止位&lt;br /&gt;
|-&lt;br /&gt;
|SERIAL_5N1||5||无||1||  ||SERIAL_5E2||5||偶||2&lt;br /&gt;
|-&lt;br /&gt;
|SERIAL_6N1||6||无||1||  ||SERIAL_6E2||6||偶||2&lt;br /&gt;
|-&lt;br /&gt;
|SERIAL_7N1||7||无||1||  ||SERIAL_7E2||7||偶||2&lt;br /&gt;
|-&lt;br /&gt;
|SERIAL_8N1||8||无||1||  ||SERIAL_8E2||8||偶||2&lt;br /&gt;
|-&lt;br /&gt;
|SERIAL_5N2||5||无||2||  ||SERIAL_5O2||5||奇||1&lt;br /&gt;
|-&lt;br /&gt;
|SERIAL_6N2||6||无||2||  ||SERIAL_6O2||6||奇||1&lt;br /&gt;
|-&lt;br /&gt;
|SERIAL_7N2||7||无||2||  ||SERIAL_7O1||7||奇||1&lt;br /&gt;
|-&lt;br /&gt;
|SERIAL_8N2||8||无||2||  ||SERIAL_8O1||8||奇||1&lt;br /&gt;
|-&lt;br /&gt;
|SERIAL_5E1||5||偶||1||  ||SERIAL_5O2||5||奇||2&lt;br /&gt;
|-&lt;br /&gt;
|SERIAL_6E1||6||偶||1||  ||SERIAL_6O2||6||奇||2&lt;br /&gt;
|-&lt;br /&gt;
|SERIAL_7E1||7||偶||1||  ||SERIAL_7O2||7||奇||2&lt;br /&gt;
|-&lt;br /&gt;
|SERIAL_8E1||8||偶||1||  ||SERIAL_8O2||8||奇||2&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==if (Serial)的用法==&lt;br /&gt;
&lt;br /&gt;
当串口被打开时，Serial的值为真。串口被关闭时Serial的值为假。&lt;br /&gt;
&lt;br /&gt;
比较囧的是，这个方法只适用于Leonardo和micro的Serial，也就是说连接连接到电脑USB的那个模拟串口。&lt;br /&gt;
&lt;br /&gt;
例如以下程序，当你没有使用串口监视器打开串口时，程序就会一直循环运行while (!Serial) {;} ，当你打开串口监视器，程序会退出while循环，开始loop中的程序。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  while (!Serial) {;}&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void loop() {&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==read和peek输入方式的差异==&lt;br /&gt;
&lt;br /&gt;
串口接收到的数据都会暂时存放在接收缓冲区中，使用read()与peek()都是从接收缓冲区中读取数据。不同的是，使用read()读取数据后，会将该数据从接收缓冲区移除；而使用peek()读取时，不会移除接收缓冲区中的数据。&lt;br /&gt;
&lt;br /&gt;
你可以使用以下程序，观察其运行结果：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
char col;&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void loop() {&lt;br /&gt;
  while(Serial.available()&amp;gt;0){&lt;br /&gt;
    col=Serial.read();&lt;br /&gt;
    Serial.print(&amp;quot;Read: &amp;quot;);&lt;br /&gt;
    Serial.println(col);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
char col;&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void loop() {&lt;br /&gt;
  while(Serial.available()&amp;gt;0){&lt;br /&gt;
    col=Serial.peek();&lt;br /&gt;
    Serial.print(&amp;quot;Read: &amp;quot;);&lt;br /&gt;
    Serial.println(col);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==串口读入int型数据==&lt;br /&gt;
&lt;br /&gt;
实际上是串口读入字符串，再转换为int型数据&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while (Serial.available() &amp;gt; 0) {&lt;br /&gt;
    int inChar = Serial.read();&lt;br /&gt;
    if (isDigit(inChar))&lt;br /&gt;
{&lt;br /&gt;
inString += (char)inChar;&lt;br /&gt;
}&lt;br /&gt;
i=inString.toInt();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==输出不同进制的文本==&lt;br /&gt;
&lt;br /&gt;
我们可以是用 Serial.print(val, format)的形式输出不同进制的文本&lt;br /&gt;
&lt;br /&gt;
参数val 是需要输出的数据&lt;br /&gt;
&lt;br /&gt;
参数format 是需要输出的进制形式,你可以使用如下参数:&lt;br /&gt;
&lt;br /&gt;
BIN（二进制）&lt;br /&gt;
&lt;br /&gt;
DEC（十进制）&lt;br /&gt;
&lt;br /&gt;
OCT（八进制）&lt;br /&gt;
&lt;br /&gt;
HEX（十六进制）&lt;br /&gt;
&lt;br /&gt;
例如,使用Serial.print(123,BIN)，你可以在串口调试器上看到1111011&lt;br /&gt;
&lt;br /&gt;
使用Serial.print(123,HEX)，你可以在串口调试器上看到7B&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==修改串口缓冲区大小==&lt;br /&gt;
Microduino Core串口缓冲区默认为64字节，如果你单次传输的数据较多可以将&lt;br /&gt;
&lt;br /&gt;
arduino-1.0.5-r2\hardware\arduino\cores\arduino\HardwareSerial.cpp中的&lt;br /&gt;
&lt;br /&gt;
 #define SERIAL_BUFFER_SIZE 64&lt;br /&gt;
&lt;br /&gt;
修改为&lt;br /&gt;
&lt;br /&gt;
 #define SERIAL_BUFFER_SIZE 128&lt;br /&gt;
&lt;br /&gt;
这样就有128字节的缓冲区了&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Radiumray9@gmail.com</name></author>	</entry>

	</feed>