I am using ISR to receive data in through the rs232 port. My problem is that the strings that i am receiving are NOT fixed length. Some are 8 characters and others 11. there is no start of message, or end of message. Any suggestions on how I capture the full string
Thanks
Delene
___________________________
This message was ported from CCS's old forum
Original Post ID: 144516311
Neutone
Joined: 08 Sep 2003 Posts: 839 Location: Houston
Re: rs232 odd length strings
Posted: Thu Jul 24, 2003 9:11 am
<font face="Courier New" size=-1>:=I am using ISR to receive data in through the rs232 port. My problem is that the strings that i am receiving are NOT fixed length. Some are 8 characters and others 11. there is no start of message, or end of message. Any suggestions on how I capture the full string
#int_TIMER1 //*********************************
TIMER1_isr() // 1.5 byte periods after last byte
{ disable_interrupts(int_TIMER1); // TMR1 Overflow Interrupt Enable bit off
--PacketIndex; // Set index to last recieved byte
CommPacketIn=1; // Tag packet for processing
}
#int_RDA //**************
RDA_isr() // BYTE RECIEVED
{ int8 x; // Create byte storage
x = fgetC( chanA ); // Get incomming byte from buffer
if(!CommPacketIn) // Do not accept incomming bytes if packet is waiting
{ PacketBuffer[PacketIndex++] = x; // Place incomming byte in PacketBuffer
if( bit_test(PacketIndex,6)) // If packet index larger than packetbuffer (64)
PacketIndex = 0; // Zero packet index value
set_timer1( 48640 ); // Wait 1.5 byte periods then interupt (set for 4800bps now) EVALUATE FOR PERFORMANCE
TMR1IF=0; // Clear timer1 overflow Interrupt Flag bit
enable_interrupts(int_TIMER1); // TMR1 Overflow Interrupt Enable bit on
}
}
</font>
___________________________
This message was ported from CCS's old forum
Original Post ID: 144516312
Levett Prins Guest
Re: rs232 odd length strings
Posted: Sat Jul 26, 2003 3:51 am
:=I am using ISR to receive data in through the rs232 port. My problem is that the strings that i am receiving are NOT fixed length. Some are 8 characters and others 11. there is no start of message, or end of message. Any suggestions on how I capture the full string
:=
:=Thanks
:=Delene
The most succesful method I used so far is to simply wait for a timeout condition and then to process the RX buffer. I am using it to read variable length strings from a modem. Change the timeout length according to the baud rate you are using.
Good luck
Levett
#INT_RDA
void RDA_isr()
{
long timeout=0;
char c;
c=fgetc(MODEM); RXbuffer[RXi]=c;
while(!kbhit() && (++timeout<5000)) // wag vir volgende karakter
{delay_us(10); if(kbhit()) break;} // 19200BPS = 2ms / CHAR (50000 = 500 ms)
if(timeout>=5000) //end of response
{
RXi_END=RXi; //end of line index
//**PROCESS RXbuffer HERE!!!
RXi=RXbuffer_LEN_LOD; //cause overflow to clear and reset RXbuffer
}
RXi++;
if(RXi>=64) //prevent overflow
{
for(RXi=0; RXi
RXi=0;
}
}
___________________________
This message was ported from CCS's old forum
Original Post ID: 144516385
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum