请教各位大神,如何将string类型转换为char类型?
在网上搜索了好多答案,要么是C的,arduino不适用,要么太简略没看懂,请各位高手给个解答!不胜感激!简单地说有个字符串text6="ABCDEFG";(字符串是程序从串口读出来的,事前无法知道内容,ABCDEFG是举个例子)
而液晶屏显示语句
putChar16x16(unsigned char row,unsigned char col,unsigned char count,unsigned char const *put,bool background)。
我怎么能让它显示出来?
谢谢了!
试一下:
putChar16x16(row,col,sizeof(text6)-1 ,text6,background); // String轉char
String s = "ABCDEFG";
char buf;
s.toCharArray(buf, s.length() + 1);
Serial.println(buf); // Return "ABCDEFG" 本帖最后由 fangtaonj 于 2013-5-1 11:01 编辑
luhuaneda 发表于 2013-4-30 22:15 static/image/common/back.gif
试一下:
putChar16x16(row,col,sizeof(text6)-1 ,text6,background);
l谢谢您的回复!按您的建议我执行如下语句:
cd.putChar16x16(5,4,(text6.length()-1) ,text6,true);
提示错误。
错误内容:
GPScommOK0430_ino.ino: In function 'void setup()':
GPScommOK0430_ino:41: error: no matching function for call to 'lcd12864wrt::putChar16x16(int, int, unsigned int, String&, int)'
C:\Documents and Settings\ft\桌面\arduino-1.0.4\libraries\Lcd12864wrt/Lcd12864wrt.h:54: note: candidates are: void lcd12864wrt::putChar16x16(unsigned char, unsigned char, unsigned char, const unsigned char*, bool)
感觉是变量类型不对,请问该如何修改?
用sizeof(text6)-1代换(text6.length()-1)结果也是一样
我是新手,不太懂变量类型如何转换。
pizg 发表于 2013-5-1 09:12 static/image/common/back.gif
// String轉char
String s = "ABCDEFG";
char buf;
谢谢,您的代码确实好用,正在调试程序。谢谢您! fangtaonj 发表于 2013-5-1 11:00 static/image/common/back.gif
l谢谢您的回复!按您的建议我执行如下语句:
cd.putChar16x16(5,4,(text6.length()-1) ,text6,true); ...
你可能沒有這函式
putChar16x16(row,col,sizeof(text6)-1 ,text6,background);
的Library,
請檢查一下你是否已安裝正確的Library. pizg 发表于 2013-5-1 17:16 static/image/common/back.gif
你可能沒有這函式
putChar16x16(row,col,sizeof(text6)-1 ,text6,background);
的Library,
库有的,这个函数的具体要求就是从这个库的CPP文件中看到的。谢谢您的回复。 本帖最后由 fangtaonj 于 2013-5-1 21:41 编辑
pizg 发表于 2013-5-1 09:12 static/image/common/back.gif
// String轉char
String s = "ABCDEFG";
char buf;
pizg兄您好!按您的建议编了代码,但发现一个有趣和奇怪的现象,如果字符串是全部英文字母,显示很正常,如果这个字符串全是数字,就不能显示好像死机一样。有部分字符部分数字的就可能行可能不行没办法只好用如下代码:
String mh="V:";
text6="123456789";
mh.concat(text6);
lcd.setCursor(0,5);
char buf;
mh.toCharArray(buf, mh.length() + 1);
lcd.print(buf,false);
lcd.print(buf,false);是字符串变成char变量后可以使用的打印语句。
前几句代码是把全数字的字符串加上一个字母头“V:”
即便这样也不稳定,请问是何原因?是不是带数字的字符串有问题?
fangtaonj 发表于 2013-5-1 21:39 static/image/common/back.gif
pizg兄您好!按您的建议编了代码,但发现一个有趣和奇怪的现象,如果字符串是全部英文字母,显示很正常 ...
試一下這樣:
String mh="V:";
text6="123456789";
mh += text6;
lcd.setCursor(0,5);
char buf;
mh.toCharArray(buf, mh.length() + 1);
lcd.print(buf,false); pizg 发表于 2013-5-1 23:51 static/image/common/back.gif
試一下這樣:
String mh="V:";
text6="123456789";
pizg兄,这样还是不行,还是老样子。我换了一个板子也还是一样。谢谢您的回复! 谢谢liangzuoting兄!确实好用,但有个现象:l
text6= "1234567.8901";
//char buf;
char *buf = &text6; //P points to first char of text6 now !
text6.toCharArray(buf, text6.length()+1);
glcd.drawstring(16,7, buf);
glcd.display();
delay(1000);
屏幕显示234567.8901,少个第一个数字字符1,不知何故? fangtaonj 发表于 2013-5-2 13:29 static/image/common/back.gif
谢谢liangzuoting兄!确实好用,但有个现象:l
text6= "1234567.8901";
//char buf
你还是写差了。
有了这一句 : char *buf = &text6;
这一句也就不用了 : text6.toCharArray(buf, text6.length()+1);
显示少1的问题,应该是屏幕显示不下整个串了吧,16,7是坐标么,可以把字往左挪一点试试。 liangzuoting 发表于 2013-5-2 15:54 static/image/common/back.gif
你还是写差了。
有了这一句 : char *buf = &text6;
这一句也就不用了 : text6.toCharArray(buf,...
谢谢liangzuoting 兄!去掉你说的这句text6.toCharArray(buf, text6.length()+1);
确实还是正常工作。显示少1的问题不知什么原因,坐标16,7怎么移动都还是一样,真奇怪。
页:
[1]