簡體   English   中英

從C#接口接收正確的整數的問題

[英]Problem with receiving correct integer from c# inteface

我正在編寫一個動態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)。

令您震驚的是,您所描述的甚至令我感到震驚。 v = uart_rd; 將char數組的POINTER分配給v變量,並且UART1_Write_Textchar *作為輸入,而不是ulong

您可能想要做的是將接收到的字符串解析為long。 您可以使用mikroC的stdlib庫中的atol進行此操作。 但是,如果要回顯在UART上收到的內容,只需執行UART1_Write_Text(uart_rd); 因為它已經將數據編碼為字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM