从C#接口

时间:2019-07-26 16:17:43

标签: c# pic uart mikroc

我正在编写一个动态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)。

1 个答案:

答案 0 :(得分:0)

即使您描述的很接近,我也很震惊。行v = uart_rd;将char数组的POINTER分配给v变量,并且UART1_Write_Textchar *作为输入,而不是ulong

您可能想要做的是将接收到的字符串解析为long。您可以使用mikroC的atol库中的stdlib来做到这一点。但是,如果您想回显在UART上收到的内容,请执行UART1_Write_Text(uart_rd);,因为它已经将数据编码为字符串。