如何在arduino中输入汉字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在arduino中输入汉字相关的知识,希望对你有一定的参考价值。

arduino编译器里输入不了汉字,啊,求解

这些回答都没有说到真正原因。
输入法的汉字上屏模式一般有三种:默认的接口上屏、CTRL+V的方式、WM_PASTE方式,如果你的输入法可以选择上屏模式,那么就可以在arduino等非常特殊的IED环境里输入汉字。目前很多输入法都没有考虑到这个问题,有一个输入法可以:酷极五笔输入法。
开发的作者好像不是团队,而是个人,此输入法不错!不用安装,就是不太兼容win7了
参考技术A arduino的IDE不支持中文。用另外的文本编辑器可以输入中文。 参考技术B 用其他编辑器写汉字吧追问

什么编辑器?也可以编写IDE吗

追答

比如记事本写好汉字 再用 arduino编译器编译啊

如何将串行输入存储在char数组arduino中?

【中文标题】如何将串行输入存储在char数组arduino中?【英文标题】:How to store serial inputs in an char array arduino? 【发布时间】:2020-04-09 14:39:55 【问题描述】:

我的目标是在 2 个指定字符之间获取 char 数组的某些部分。下面的代码完美运行,并按我的预期返回 0037。但是,我想让它不仅可用于 char*s 的串行输入。换句话说,如果我将“123123123!0037sjd#asdasdasd”写入串行,代码应该再次以相同的方式工作。

我该怎么做?

const char *s = "123123123!0037sjd#asdasdasd";
const char *CHAR1 = "!";
const char *CHAR2 = "#";
char *target = NULL;
char *start, *end;

void setup() 
  Serial.begin(9600);


void loop() 
  //s=(char)Serial.read();
  if (start = strstr(s, CHAR1)) 
    start += strlen(CHAR1);
    if (end = strstr(start, CHAR2)) 
      target = (char*) malloc(end - start + 1);
      memcpy(target, start, end - start);
      target[end - start] = '\0';
    
  
  if (target) 
    for (int i = 0; i < 4; i++) 
      Serial.print(target[i]);
    
    target = "";
    free(target);
  
  target = "";
  free(target);

【问题讨论】:

要使用您已有的代码,您需要将接收到的字节存储在char 缓冲区中,您需要附加一个空终止符(搜索词:“c-style string "),您需要定义您可以在串行上接收到的最大字节长度,您需要定义您的程序如何知道串行上的字节序列已经结束(结束字符,将长度写为第一个字节,或者只是等待读取操作超时),并且您需要定义程序在接收到比它可以处理的更长的字节序列时要执行的操作。之后你就可以使用你拥有的代码了。 你能用这种方式编辑我的代码吗?因为我对此很陌生。我必须使用 char 数组而不是字符串。 为什么一定要用char数组而不是Stringstd::string 我的第一条评论描述了定义协议。它不是从代码开始的。它从笔和纸开始。您需要设计计算机和 arduino 之间的通信规则。只有在您定义了这些规则之后,您才能实施它们(编码它们)。该规则可以像“计算机只会发送正好 10 个字符”一样简单,但您仍然需要该规则。这取决于你想做什么。 “c 样式字符串”只是一个以空字符结尾的字符数组。 【参考方案1】:

分配丢失原始分配。

代码错误地释放了一些未分配的东西。

// Bad
target="";        // loses prior allocation
free( target );   // Attempts to free something not allocated

相反

free( target );
target = NULL;

【讨论】:

我这样写的时候,0037就无限了 @ReduXCompletedy 很可能您只将此修复应用于代码中 2 个位置中的 1 个。【参考方案2】:

为了解析这样的串行流,也许只使用一个标志。从清除标志开始。当你看到 ! 时设置标志。在设置标志的同时输入数字时,将它们存储在数组中。当你看到不是数字的东西时,清除标志。

如果最终结果是这样的话,您甚至可以动态累积整数中的数字(跳过数组)。

就我个人而言,我在 Arduino 上不使用 malloc/free,这里也不需要。

HTH!

【讨论】:

以上是关于如何在arduino中输入汉字的主要内容,如果未能解决你的问题,请参考以下文章

如何将串行输入存储在char数组arduino中?

用Javascript如何实现在输入框中输入汉字拼音的首字母动态过滤相应的汉字??

如何自动给汉字加拼音

如何限定TEDIT只能输入数字或汉字或字母

在mfc中如何判断输入的是不是为汉字?

如何使用 4x4 键盘将多位整数输入 Arduino?