我正在编写一个动态 C# 接口,以显示我的线路跟随机器人传感器和电机的实时状态。我还向微控制器发送了传感器阈值。
我的代码是:
char uart_rd[10];
unsigned long v;
while (UART1_Data_Ready() == 1) {
UART1_Read_Text(uart_rd, " ", 255);
delay_ms(1000);
v = uart_rd;
UART1_Write_Text(v);
PORTD = v;
}
我的 C# 发送号码的代码是:
private void sendData()
{
Console.WriteLine("sending");
string Seuil = SeuilVal.Text;
ComPort.Write(Seuil); // Send the user's text straight out the port
Console.WriteLine(Seuil);
//SeuilVal.Clear(); //clear screen after sending data
}
现在我想使用 MikroC 接收阈值。当我发送一个 2 位数字(例如 99(的号码时,事情很好,但是当我发送一个 3 位或更多数字的号码时,我只收到前两位数字(例如我发送 1234,但我收到 12(。
震惊你描述的东西甚至接近工作。v = uart_rd;
行将 char 数组的 POINTER 分配给 v
变量,UART1_Write_Text
将char *
作为输入,而不是ulong
。
您可能想要做的是将收到的字符串解析为长字符串。您可以使用mikroC stdlib
库中的atol
来执行此操作。但是,如果您想回显您在 UART 上收到的内容,只需执行UART1_Write_Text(uart_rd);
,因为它已经将数据编码为字符串。