2016-01-08 35 views
0

Arduino的代码错误的Arduino通信与COM

#include <TFT.h> 
 
#include <SPI.h> 
 
#define cs 10 
 
#define dc 9 
 
#define rst 8 
 
TFT TFTscreen = TFT(cs, dc, rst); 
 

 
int led = 13; 
 
void setup() { 
 
    TFTscreen.begin(); 
 
    Serial.begin(9600); 
 
    pinMode(led, OUTPUT); 
 
} 
 

 
void loop() { 
 
    TFTscreen.background(0, 0, 0); 
 
    TFTscreen.setTextSize(1); 
 
if (Serial.available() > 0) { 
 
    digitalWrite(led, HIGH); 
 
    TFTscreen.text(Serial.read(), 0, 0); 
 
} 
 
}

Python代码

import os 
 
import sys 
 
import serial 
 
import datetime 
 
ser = serial.Serial('COM4', 9600) 
 
print(ser.name) 
 
print(datetime.datetime.now()) 
 
date_string = str(datetime.datetime.now()) 
 
date_bytes = date_string.encode('ascii') 
 
ser.write(date_bytes) 
 
print('OK') 
 
ser.close

Python是工作正常,但Arduino的给我这个呃从'int'无效转换为'const char *'[-fpermissive],我认为数据类型的问题,但我昨天开始学习这种语言。

回答

0

的问题是在这里,我想:

TFTscreen.text(Serial.read(), 0, 0); 

你叫“读”功能,它返回一个整数。屏幕的“文本”功能想要一个字符指针,而不是作为第一个参数,你可以不投一个int为char *就像在错误说

“无效从‘诠释’到“为const char *转换”

你可以看一下所有的参数和Arduino的文档返回类型: https://www.arduino.cc/en/Serial/Read

+0

我该如何解决? – AHuMeWHuK

+0

嗯,我只是假设,但我想你不想每次都在TFT屏幕上显示一个单独的字节,因为“读取”功能只返回一个单个字节。如果我的假设是正确的,我会将所有接收的字节保存在一个int数组中,并将其转换为char数组。 转换这里所涉及例如:http://stackoverflow.com/questions/4712737/convert-int-array-to-char-array –

+0

的#include 的#include 的#define CS 10 的#define直流9 #define rst 8 TFT TFTscreen = TFT(cs,dc,rst); int led = 13; void setup(){ TFTscreen.begin(); Serial.begin(9600); pinMode(led,OUTPUT); } 空隙环(){ TFTscreen.background(0,0,0); TFTscreen.setTextSize(1); 如果(Serial.available()> 0){ digitalWrite(LED,HIGH); 对(INT I = 0; Serial.available()> 0;我++){ INT X [26]; 对(INT C = O;ç<26; C++){ X [I] =串行。parseInt函数(); } char y [26]; (int z = 0; z <26; z ++){ y [i] = x [i]; TFTscreen.text(y,0,0); } } } } – AHuMeWHuK

0

也许,在你的Python增加一个“\ 0”发送字符串到串行之前,这将作为接收字符串的结尾。我不记得是否python默认发送这个,但你可以明确地发送这个。

在arduino上,获取接收到的数据并填充一个字符数组(可能使用计数器或做指针aritchmetic,小心超过数组声明的最大大小),然后等待'\ 0'。一旦获得\ 0,将其附加到字符数组中,并执行TFT显示。然后再次重复该过程,重置计数器,然后等待传入的字节流。

我还没有使用的TFT库但我在您的实现预期的问题之一是,它不会显示任何话,因为你会继续每一个字符写入0,0。