小编kel*_*p99的帖子

Arduino 上的 Serial 和 Stream 有什么区别,Serial.write 是如何实现的?

我在理解术语串行和流之间的区别时遇到了很多麻烦。Serial 不是 Stream 的一种吗?

我对家庭作业有一些我不明白的问题。

计算机通过使用(流还是串行?)来“读取”它们相互发送的数据以确定每个字节的含义?

此外,也Serial.write()让我很困惑。它返回一个字节的数据,对吗?一个字节是 8 位。因此,如果Serial.write()在 Arduino 上传递一个 int 类型(16 位),它会向串行流返回 2 个字节吗?

类似地,如果 Arduino C 中的变量是 unsigned long,我们如何使用 将这个变量的最高有效字节表示给串行流Serial.write()

例如,我有变量 x 作为 unsigned long。将Serial.write(x>>8)是正确的答案,因为 long 是 32 位,所以无符号使其大两倍。由于Serial.write()以字节为单位返回,因此 64/8 将是 8。

所有这些问题可能看起来都很业余,但我真的很想学习这些东西,而我的老师并不擅长解释。如果有人能在概念上更清楚地说明这一点,我将永远感激不尽。谢谢!

c++ arduino

2
推荐指数
1
解决办法
1764
查看次数

为什么我的if/else语句不起作用?

我开始为一个小型银行帐户程序编写代码,但我的if/else语句不起作用.在循环的顶部,我scanf用来获取有关下一个需要执行哪个选项的用户输入.第一个始终有效,但在此之后,始终会打印错误语句.

例如,用户类型1.印刷的是:

case 1
ERROR, please try again
Run Code Online (Sandbox Code Playgroud)

只有案例1应该打印,为什么错误信息也会打印?我尝试使用switch case语句,但也没有用.


这是我的代码:

char num = '7';
while (1) {
    if(num == '7') {  
        printf("0. Exit\n1. Deposit\n2. Withdrawal\n3. Add account\n");
        printf("4. Remove account\n5. Balance inquiry\n6. View accounts\n");
        printf("Enter option: (0/1/2/3/4/5/6)\n");
        scanf("%c", &num);
    }
    else if (num == '0') {
        exit(0);
    }
    else if (num == '1') {
        printf("case 1\n");
        num = '7';
    }
    else if (num == '2') {
        printf("case 2\n");
        num = '7';
    }
    else …
Run Code Online (Sandbox Code Playgroud)

c user-input

-1
推荐指数
1
解决办法
92
查看次数

标签 统计

arduino ×1

c ×1

c++ ×1

user-input ×1