<HTML dir=ltr><HEAD><TITLE>Re: [Mono-dev] Patch for System.IO.Ports.SerialPort ReadLinefunction</TITLE>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.6000.16546" name=GENERATOR></HEAD>
<BODY>
<DIV id=idOWAReplyText35028 dir=ltr>
<DIV dir=ltr><FONT face=Arial color=#000000 size=2>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman" size=3>Hello Miguel,</FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman" size=3>Yes using the ReadTo function does make the most sense as it is a special case of the operation.</FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman">I had a look at the ReadTo function and I think it is broken.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>It assumes that it is in the initial state (IE current is 0) when it encounters the beginning of the string it is reading to.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>So if we are reading to &#8220;ababZ&#8221; and the input is &#8220;abababZfoo&#8221; it will read past the &#8220;ababZ&#8221;.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman" size=3>It was because of this that I put the &#8216;state-driven&#8217; approach into the too hard / too complex basket when I wrote my initial function.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>But thinking about it further the ReadTo function could be extended to keep multiple states (ie a list of &#8216;current&#8217; offsets).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>One for each time a potential beginning of the string we are looking for is encountered.<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;I have&nbsp;attached a file with such an extended ReadTo function.</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman" size=3><SPAN style="mso-spacerun: yes"></SPAN></FONT>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman" size=3><SPAN style="mso-spacerun: yes"></SPAN></FONT><o:p><FONT face="Times New Roman" size=3>&nbsp;Let me know your thought.</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p><FONT face="Times New Roman" size=3></FONT></o:p>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p><FONT face="Times New Roman" size=3>Regards</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p><FONT face="Times New Roman" size=3>Michael</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P></FONT></DIV></DIV>
<DIV dir=ltr><BR>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> Miguel de Icaza [mailto:miguel@novell.com]<BR><B>Sent:</B> Tue 06.11.2007 02:06<BR><B>To:</B> Michael Mattess<BR><B>Cc:</B> mono-devel-list@lists.ximian.com<BR><B>Subject:</B> Re: [Mono-dev] Patch for System.IO.Ports.SerialPort ReadLinefunction<BR></FONT><BR></DIV>
<DIV>
<P><FONT size=2>Hello,<BR><BR>&nbsp;&nbsp;&nbsp; My ReadLine routine is broken, it did not append data that was only<BR>partially part of the ReadLine.&nbsp;&nbsp; While I was fixing it, I noticed that<BR>we already have a routine that did this correctly (ReadTo).<BR><BR>&nbsp;&nbsp;&nbsp; So am going to just change the code to be:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReadTo (new_line).<BR><BR>Miguel.<BR></FONT></P></DIV></BODY></HTML>