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