使用自定义java程序上载已编译的命令c程序
我有一个Java程序,它基于硬编码的命令进行操作。我希望有一个命令,它将接受一个字符串作为参数,然后使用下面的代码将该字符串转换为CPP文件(这对我来说是完美的)。下面的cpp代码中有一个函数,它接受一个名为printToLCD(boolean, String);
的字符串,当编译并上传到我的arduino uno时,它将打印一个字符串并显示在我的16x2 lcd屏幕上
我想使用我的Java程序来更改LCD屏幕上的消息,但是我想使用这个函数
我的程序能够连接到Arduino并读取它的串行输入,但是我无法编译C代码并将其上传到Arduino。有没有人遇到过做类似事情的人?有没有人遇到过类似的项目
有人知道如何编译C代码,然后将编译后的结果上传到arduino吗? 我已经查看了ArduinoIDE的方法来完成这项工作,但我找不到它们在哪里编译代码。这是我点击按钮时产生的,然后结果存储在字符串中,然后字符串路径被上传到arduino吗
Arduino的C代码:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x3F // <<----- Add your address here. Find it from I2C Scanner
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
int n = 1;
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
void cls(){
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print(" ");
}
void printToLCD(boolean setBacklight, char const textToPrint[]){
lcd.home();
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
if(setBacklight){
lcd.setBacklight(HIGH);
}
else {
lcd.setBacklight(LOW);
}
int stringLength = strlen(textToPrint);
if(stringLength <= 16 && stringLength > 0){
lcd.setCursor(0,0);
lcd.print(textToPrint);
}
else if(stringLength >= 17 && stringLength <= 32){
char *key2 = (char*)malloc(16);
int o = 0;
for(int j = 0; j < (stringLength -16); j++){
key2[j] = textToPrint[j+16];
o = j;
}
for(int a = o; a < 17; a++){
key2[a+1] = ' ';
}
lcd.setCursor(0,0);
lcd.print(textToPrint);
lcd.setCursor(0,1);
lcd.print(key2);
}
else if(stringLength > 32){
lcd.setCursor(0,0);
lcd.print("Hey! You have to");
lcd.setCursor(0,1);
lcd.print("many characters!");
}
}
void setup()
{
lcd.begin (16,2); // <<----- My LCD was 16x2
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
cls();
printToLCD(true,"All hail our lord Google.");
}
void loop(){
}
共 (0) 个答案