我正在编写一个程序来读取.txt文件中的字符,并将此数据串行发送到MCU ATMEGA2560的UART。该MCU的LCD显示屏应一行一行接一个地显示字符。一旦遇到换行符'\ n',。txt行的下一行应打印在LCD显示屏的下一行中。现在,我面临的问题是尽管我能够在LCD上一个接一个地打印字符,但是换行符不会将光标移动到下一行的开头。取而代之的是,日语(或我不确定)字符会被打印在其位置,而下一行的字符将与其他字符打印在同一行。我只需要帮助将换行符作为LCD的命令/请求来处理,以便光标移动到下一行,而不是在同一行上打印随机的特殊字符。
我已经使用pySerial从txt文件中顺序读取了字符。我已经完成了适当的编码,并且可以在Windows 10上运行。我还已经将字符一个接一个地写入UART。这是用必要的编码进行串行写入的代码的一部分。我不确定这是否是我要去的地方。
$(document).ready(function() {
$.ajax({
type: "post",
url: '/echo/json/',
data: {},
success: function(data) {
var valid = $.trim(data);
if (valid.toLowerCase().indexOf("error") == '-1') {
localStorage.setItem("swal", JSON.stringify({
title: "Good job!",
text: 'Thanks',
icon: "success",
button: true
}));
swal(JSON.parse(localStorage.getItem("swal"))).then(() => location.reload());
} else {
swal("Oops", data, "error");
}
}
});
});
来到C代码中,串行接收数据并将接收到的字符存储在变量中。我尝试附加字符,但我认为这似乎是导致问题的原因。
with open(args.file) as f:
for line in f:
for ch in line:
serialPort.write(ch.encode())
要发送到UART的串行数据的格式为'11,23、8 \ nC1,A5,F3#'。散列表示串行数据的结尾。
在LCD上应显示如下:
11、23、8
C1,A5,F3
我们非常感谢您的帮助。谢谢。
答案 0 :(得分:0)
似乎append函数没有按原样使用换行符。这是我解决问题的方法。
ISR(USART2_RX_vect) // ISR for receive complete interrupt
{
data[count]= UDR2;
UDR2 = data[count];
if(data[count] == 0x0A)
{
lcd_cursor(2,1);
pos = count;
count++;
flag = FALSE;
}
else if(count > pos && flag == FALSE)
{
lcd_wr_char(data[count]);
x[a]=data[count];
a++;
count++;
flag = FALSE;
}
else if(flag==TRUE)
{
lcd_wr_char(data[count]);
y[b]=data[count];
b++;
count++;
flag = TRUE;
}
}
我将输入的数据与换行符十六进制值(0x0A)进行了比较,如果发现相等,请跳过该字符并将光标移至LCD显示屏的第二行。