我正在编写一个动态C#接口,以显示我的线路跟随器机器人传感器和电机的实时状态。我还将传感器的阈值发送到微控制器。
我的代码是:
char uart_rd[10];
unsigned long v;
while (UART1_Data_Ready() == 1) {
UART1_Read_Text(uart_rd, "\0", 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)。
答案 0 :(得分:0)
即使您描述的很接近,我也很震惊。行v = uart_rd;
将char数组的POINTER分配给v
变量,并且UART1_Write_Text
以char *
作为输入,而不是ulong
。>
您可能想要做的是将接收到的字符串解析为long。您可以使用mikroC的atol
库中的stdlib
来做到这一点。但是,如果您想回显在UART上收到的内容,请执行UART1_Write_Text(uart_rd);
,因为它已经将数据编码为字符串。