首页 > 解决方案 > 从 c# 接口接收正确整数的问题

问题描述

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

标签: c#picuartmikroc

解决方案


我很震惊,你所描述的甚至接近作品。该行将v = uart_rd;char 数组的 POINTER 分配给v变量,并将UART1_Write_Texta char *作为输入,而不是 a ulong

您可能想要做的是将收到的字符串解析为 long。您可以使用来自 mikroCatol的库中的内容来执行此操作。stdlib但是,如果您想回显您在 UART 上收到的内容,只需执行此操作UART1_Write_Text(uart_rd);,因为它已经将数据编码为字符串。


推荐阅读