C 回路故障(arduino)

C 回路故障(arduino),c,arduino,C,Arduino,我想在学校里用arduino和, 该项目是使用条形码扫描仪扫描项目,输入价格并开具收据。条形码扫描仪连接到串行端口,键盘和打印机通过串行软件连接。我使用一台3.5英寸电视作为显示器。项目可以通过条形码的前3位数字识别。我希望在草图中的某个位置包含项目名称,并在字符串以编号开头时匹配和打印它们。 在其他论坛用户的帮助下,我创建了一个草图,但是日期被重复打印,没有其他事情发生。如何使日期只打印一次。以及如何在打印之前缓冲串行和软件串行的数据 //#include <TVout.h> //

我想在学校里用arduino和, 该项目是使用条形码扫描仪扫描项目,输入价格并开具收据。条形码扫描仪连接到串行端口,键盘和打印机通过串行软件连接。我使用一台3.5英寸电视作为显示器。项目可以通过条形码的前3位数字识别。我希望在草图中的某个位置包含项目名称,并在字符串以编号开头时匹配和打印它们。 在其他论坛用户的帮助下,我创建了一个草图,但是日期被重复打印,没有其他事情发生。如何使日期只打印一次。以及如何在打印之前缓冲串行和软件串行的数据

//#include <TVout.h>
//#include <video_gen.h>

//ARDUINO 1.0 COMPATIBLE ONLY!
//ARDUINO 1.0 COMPATIBLE ONLY!
#include <Time.h>
#include <DS1307RTC.h>
#include <SoftwareSerial.h>
//#include <LiquidCrystal.h>
#include <Thermal.h>
#include <Wire.h>
//TVout TV;
  int printer_RX_Pin = 3;
  int printer_TX_Pin = 4;
  int incomingByte = 0;
  Thermal printer(printer_RX_Pin, printer_TX_Pin, 19200);

  String readString;    // a string to hold incoming data
   //SoftwareSerial mySerial(10, 11);
  void setup(){
    //TV.begin(PAL,120,96);
    // TV.select_font(font6x8);
    Serial.begin(9600);
    //mySerial.begin(9600);
    setSyncProvider(RTC.get);  
    // if (timeStatus() != timeSet )  
    // Serial.println("Unable to sync with the RTC");
    // else
    //  Serial.println("RTC has set the system time"); 
    //tv.print(scan item)  ???
    //ITEM SCANNED GETS STORED INTO string.Readstring
    //tv print (enter donation  Amount)
    //INPUT FROM KEYPAD GETS STORED INTO  BUFFER1 (KEYPAD IS HOOKED UP TO SOFTWARE SERIAL          PINS)
    //THEN PRINTER PRINTS TITLE  (MAYBE BETTER TO WAIT FOR ALL INPUT BEFORE PRINTING)

    printer.justify('C'); 

    //sets text justification (right, left, center) accepts 'L', 'C', 'R'
    printer.setSize('L'); // set type size, accepts 'S', 'M', 'L'
    printer.println("School Feast "); //print line
    printer.setSize('M'); // set type size, accepts 'S', 'M', 'L'
    printer.println("My Stall"); //print line 
    printer.println("My Town");
    printer.feed(); //advance one line
    printer.println(" My Country");
    printer.feed(); //advance one line 
  }

  void serialRead() {

     while (Serial.available()) {
        delay(10);  
        if (Serial.available() >0) {
        char c = Serial.read();
        readString += c;};
       }
  }
  void loop() {
    // THEN TIME GETS PRINTED 
     tmElements_t tm;

     if (RTC.read(tm)) {
       Serial.print(" ");
       print2digits(tm.Hour);
       Serial.write(':');
       print2digits(tm.Minute);
       Serial.write(':');
       print2digits(tm.Second);
       Serial.print("        ");
       Serial.print(tm.Day);
       Serial.write('/');
       Serial.print(tm.Month);
       Serial.write('/');
       Serial.print(tmYearToCalendar(tm.Year));
       Serial.println();
       printer.print(" ");

       print2digits(tm.Hour);
       printer.write(':');
       print2digits(tm.Minute);
       printer.write(':');
       print2digits(tm.Second);
       printer.print("        ");
       printer.print(tm.Day);
       printer.write('/');
       printer.print(tm.Month);
       printer.write('/');
       printer.print(tmYearToCalendar(tm.Year));
       printer.println();
     } else {
        if (RTC.chipPresent()) {
           Serial.println("The DS1307 is stopped.  Please run the SetTime");
           Serial.println("example to initialize the time and begin running.");
           Serial.println();
        } else {
           Serial.println("DS1307 read error!  Please check the circuitry.");
           Serial.println();
        }
       delay(9000);
  }
   delay(1000);
}

void print2digits(int number) {
   if (number >= 0 && number < 10) {
     Serial.write('0');
   }
   Serial.print(number);
   if (Serial.available() > 0) {
       readString = "";
       serialRead();
       String Item = readString.substring(0,3);
       //THEN ITEM PRINT( IDENTIFY ITEM BY FIRST 3 CHARACTERS OF STRING, HOW??)
       Serial.print(Item);
       printer.print(Item);
       Serial.println();{
       //THEN PRINT DONATION AMOUNT(INPUT FROM SOFTWARE SERIAL)
      //printer.print(software.serial buffer)
      //printer. print("GBP"); 
      //clear display
      //tv.clear

    }

   }
}
/#包括
//#包括
//ARDUINO 1.0仅兼容!
//ARDUINO 1.0仅兼容!
#包括
#包括
#包括
//#包括
#包括
#包括
//电视输出;
int打印机_RX_引脚=3;
int打印机_TX_引脚=4;
int incomingByte=0;
热敏打印机(打印机接收针,打印机发送针,19200);
String readString;//保存传入数据的字符串
//软件序列mySerial(10,11);
无效设置(){
//电视开始(PAL,120,96);
//电视。选择字体(font6x8);
Serial.begin(9600);
//mySerial.begin(9600);
setSyncProvider(RTC.get);
//if(timeStatus()!=timeSet)
//Serial.println(“无法与RTC同步”);
//否则
//Serial.println(“RTC已设置系统时间”);
//电视打印(扫描项目)???
//扫描的项目存储到string.Readstring中
//电视打印(输入捐赠金额)
//来自小键盘的输入被存储到缓冲器1(小键盘连接到软件串行插脚)
//然后打印机打印标题(最好在打印前等待所有输入)
打印机。证明('C');
//设置文本对正(右、左、中)接受“L”、“C”、“R”
printer.setSize('L');//设置类型大小,接受'S','M','L'
printer.println(“学校盛宴”);//打印行
printer.setSize('M');//设置类型大小,接受'S','M','L'
printer.println(“我的摊位”);//打印行
printer.println(“我的城市”);
printer.feed();//前进一行
printer.println(“我的国家”);
printer.feed();//前进一行
}
void serialRead(){
while(Serial.available()){
延迟(10);
如果(Serial.available()>0){
char c=Serial.read();
readString+=c;};
}
}
void循环(){
//然后时间就会被打印出来
TMU\t tm;
如果(实时读取(tm)){
连续打印(“”);
打印2份数字(标准小时);
Serial.write(“:”);
打印2份数字(tm.分钟);
Serial.write(“:”);
印刷数字(tm.Second);
连续打印(“”);
连续打印(tm.Day);
串行写入('/');
连续打印(tm.月);
串行写入('/');
连续打印(tm年到日历年(tm年));
Serial.println();
打印机。打印(“”);
打印2份数字(标准小时);
打印机。写入(“:”);
打印2份数字(tm.分钟);
打印机。写入(“:”);
印刷数字(tm.Second);
打印机。打印(“”);
打印机打印(tm日);
打印机。写入('/');
打印机打印(tm.月);
打印机。写入('/');
打印机打印(tm年到日历年(tm年));
printer.println();
}否则{
if(RTC.chipresent()){
Serial.println(“DS1307已停止。请运行设置时间”);
println(“初始化时间并开始运行的示例”);
Serial.println();
}否则{
Serial.println(“DS1307读取错误!请检查电路”);
Serial.println();
}
延迟(9000);
}
延迟(1000);
}
无效打印2数字(整数){
如果(数字>=0&&number<10){
串行写入('0');
}
序列号。打印(编号);
如果(Serial.available()>0){
readString=“”;
serialRead();
String Item=readString.substring(0,3);
//然后项目打印(通过字符串的前3个字符识别项目,如何??)
连续打印(项目);
打印机。打印(项目);
Serial.println(){
//然后打印捐赠金额(从软件序列输入)
//打印机。打印(软件。串行缓冲区)
//打印机打印(“英镑”);
//清晰显示
//电视,明白了吗
}
}
}

请正确格式化您的代码以使其可读。第一次在这个论坛上发布,我不知道您的意思,您能告诉我如何格式化@PaulRmeans
(RTC.read(tm)
始终读取日期,然后正确打印吗?感谢编辑@Gerald Schneiderso为什么不移动
if(RTC.read(tm)){…}
设置
并将其他部分保留在
循环中