hang1988
07-09-2010, 08:51 AM
E có viết lập trình truyền thông cho Dspic truyền thông lên PC qua RS232. Nhưng bên Visual basic chỉ nhận được có 5 kí tự còn các kí tự sau đó khi truyền lên lại không nhận được. Mong mọi người hỗ trợ
Hàm truyên lên PC
void Send_Uart_1number(int Data)
{
U1TXREG=Data;
// while(!U1STAbits.TRMT)
// {;}
}
void PC_RS232_TRAN()
{
if(++time>500)
{
time=0;
Send_Uart_1number(Fout/10+'0');// Tan so dau ra
Send_Uart_1number(Fout%10+'0');
Send_Uart_1number(F/10+'0');
Send_Uart_1number(F%10+'0');
Send_Uart_1number(Time_Start/10+'0');
Send_Uart_1number(Time_Start%10+'0');
Send_Uart_1number(OVERLOAD_FLAG+'0');
Send_Uart_1number(temp_flag+'0');
}
}
Code trong visual Basic
Private Sub MSComm1_OnComm()
If (MSComm1.CommEvent = comEvReceive) Then
DataPC = MSComm1.Input
End If
Fout = Mid(DataPC, 1, 2)
F = Mid(DataPC, 3, 2)
Time_Start = Mid(DataPC, 5, 2)
Over_Temp = Mid(DataPC, 1)
Over_Load = Mid(DataPC, 8, 1)
End Sub
Các kí tự 6,7,8 thì lại ko nhận được từ chương trình Visual basic
Hàm truyên lên PC
void Send_Uart_1number(int Data)
{
U1TXREG=Data;
// while(!U1STAbits.TRMT)
// {;}
}
void PC_RS232_TRAN()
{
if(++time>500)
{
time=0;
Send_Uart_1number(Fout/10+'0');// Tan so dau ra
Send_Uart_1number(Fout%10+'0');
Send_Uart_1number(F/10+'0');
Send_Uart_1number(F%10+'0');
Send_Uart_1number(Time_Start/10+'0');
Send_Uart_1number(Time_Start%10+'0');
Send_Uart_1number(OVERLOAD_FLAG+'0');
Send_Uart_1number(temp_flag+'0');
}
}
Code trong visual Basic
Private Sub MSComm1_OnComm()
If (MSComm1.CommEvent = comEvReceive) Then
DataPC = MSComm1.Input
End If
Fout = Mid(DataPC, 1, 2)
F = Mid(DataPC, 3, 2)
Time_Start = Mid(DataPC, 5, 2)
Over_Temp = Mid(DataPC, 1)
Over_Load = Mid(DataPC, 8, 1)
End Sub
Các kí tự 6,7,8 thì lại ko nhận được từ chương trình Visual basic