簡體   English   中英

使用PIC16F877(MikroC IDE)從c#接口接收3位數字

[英]Receiving number of 3 digits from c# interface with PIC16F877 (MikroC IDE)

我正在編寫一個動態C#接口,以顯示我的線路跟隨器機器人傳感器和電機的實時狀態。 我還將傳感器的閾值發送給微控制器。

現在,我想使用MikroC接收閾值。 我的代碼是:

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
        }

當我發送帶有2位數字的數字(例如99)時,一切都很好,但是當我發送帶有3位或更多數字的數字時,我只收到兩個前數字(例如,我發送1234,但我收到12)。

嘗試此操作以測試是否可以取回發送的內容。

C代碼1:

const int BUFFER_LENGTH = 10;          // Define the buffer length.
char buffer[BUFFER_LENGTH + 1];        // Extra one for NULL terminator.

while(1)
{
    if (UART1_Data_Ready())
    {
        memset(buffer, 0, BUFFER_LENGTH + 1);          // Clear the buffer.
        UART1_Read_Text(buffer, "\0", BUFFER_LENGTH);  // Double quotes for terminator string. Only read BUFFER_LENGTH number of chars.
        UART1_Write_Text(buffer);
    }
}

C代碼2:

char one_char = 0;

while(1)
{
    if (UART1_Data_Ready() == 1)
    {
        one_char = UART1_Read();
        UART1_Write(one_char);
    }
}

C#代碼:

private void sendData()
{
    Console.WriteLine("sending");
    string Seuil = SeuilVal.Text + '\0';  // Text plus NULL terminator.
    ComPort.Write(Seuil);                 // Send the user's text plus NULL terminator straight out the port.
    Console.WriteLine(Seuil);
    //SeuilVal.Clear();                     // Clear screen after sending data.
}

暫無
暫無

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

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