[英]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)。
嘗試此操作以測試是否可以取回發送的內容。
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);
}
}
char one_char = 0;
while(1)
{
if (UART1_Data_Ready() == 1)
{
one_char = UART1_Read();
UART1_Write(one_char);
}
}
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.