//___Pin assigned___//
const int pin_Pwm = 9;
String inputstring = ""; //a string to hold incoming data from the PC
int inputstringLength=0;
void setup()
{
Serial.begin(115200); //Serial with PC to 38400
Serial2.begin(38400); //Serial with pH meter to 38400
Serial3.begin(38400); //Serial with EC meter to 38400
//attachInterrupt(0,Millis,RISING);
}
void loop()
{
//___Receive Command___//
if(Serial.available()>0)
{
while(Serial.available()>0)
{
inputstring += char(Serial.read());
inputstringLength += 1;
delay(1);
}
}
//___Command Checker___//
Command_Checker();
}
ฟังชันก์การทำงานคือการส่งคำสั่งเข้ามาจะมาฟินเตอร์ที่ฟังชันก์นี้
void Command_Checker()
{
if(inputstringLength==6)
{
if((inputstring[4]=='Y')&&(inputstring[5]=='U'))
{
if(inputstring[0]=='M')
{
Serial.print("Motor Command : ");
Serial.println(inputstring);
inputstring = "";
inputstringLength=0;
}
else if(inputstring[0]=='P')
{
Serial.print("pH Command : ");
Serial.println(inputstring);
inputstring = "";
inputstringLength=0;
}
else if(inputstring[0]=='E')
{
Serial.print("EC Command : ");
Serial.println(inputstring);
inputstring = "";
inputstringLength=0;
}
else
{
Serial.print("Command (heading) ERROR!!! : ");
Serial.println(inputstring);
inputstring = "";
inputstringLength=0;
}
}
else
{
Serial.print("Command (ending) ERROR!!! : ");
Serial.println(inputstring);
inputstring = "";
inputstringLength=0;
}
}
else if(inputstringLength == 0)
{
// Do nothing
}
else
{
Serial.print("Command (overall) ERROR!!! : ");
Serial.println(inputstring);
inputstring = "";
inputstringLength=0;
}
}
จากตรงนี้พอเข้าใจดีแต่มีปัญหาคือ การส่งคำสั่งไปแล้วมันยังคงฟินออกมาทุกตัวโดยที่ยังไม่สามารถตัดออกไปได้ และกำลังหาวิธีแก้ปัญหา
string คือการรับค่าเป็นอักษรแบบยาวๆได้ แต่ถ้าเป็น char จะได้แค่8บิต


ไม่มีความคิดเห็น:
แสดงความคิดเห็น