[英]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_Text
將char *
作為輸入,而不是ulong
。
您可能想要做的是將接收到的字符串解析為long。 您可以使用mikroC的stdlib
庫中的atol
進行此操作。 但是,如果要回顯在UART上收到的內容,只需執行UART1_Write_Text(uart_rd);
因為它已經將數據編碼為字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.