【问题标题】:Problem with receiving correct integer from c# inteface从 c# 接口接收正确整数的问题
【发布时间】:2019-07-26 16:17:43
【问题描述】:

我正在编写一个动态 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# pic uart mikroc


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      相关资源
      最近更新 更多