<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        mso-fareast-language:EN-CA;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-CA" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Because you cannot unread data from the device and you have no guarantee that all the data will be present when you do read, you need a buffer since you need a whole line to process the data and
 data might be present but the line might not be fully arrived yet, maybe just half of it. The IODevice (Serial) buffer is buffering the reception of the data until you read it, your buffer is checking data is competed to be parsed, they have a different purpose.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="595" style="width:446.55pt;background:white;border-collapse:collapse">
<tbody>
<tr>
<td width="406" valign="top" style="width:304.7pt;border:none;border-right:solid #0079AC 1.0pt;padding:0cm 7.5pt 0cm 0cm">
<p class="MsoNormal" align="center" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;text-align:center">
<span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#444444"><br>
</span><img width="396" height="102" style="width:4.125in;height:1.0625in" id="Picture_x0020_1" src="cid:image001.jpg@01D4E9FD.50AA6910" alt="36E56279"><span lang="FR"><o:p></o:p></span></p>
<p class="MsoNormal" align="center" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;text-align:center">
<span lang="FR" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#444444">une compagnie 
</span><img width="55" height="14" style="width:.5729in;height:.1458in" id="Picture_x0020_2" src="cid:image002.jpg@01D4E9FD.50AA6910"><span lang="FR"><o:p></o:p></span></p>
<p class="MsoNormal" align="center" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;text-align:center">
<span lang="FR" style="font-size:7.5pt;font-family:"Arial",sans-serif;color:#444444">RAPPROCHEZ LA DISTANCE</span><span lang="FR" style="font-size:12.0pt;font-family:"Times New Roman",serif"><o:p></o:p></span></p>
</td>
<td width="189" style="width:141.85pt;padding:0cm 0cm 0cm 0cm">
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" style="border-collapse:collapse">
<tbody>
<tr>
<td width="305" valign="top" style="width:228.75pt;padding:0cm 0cm 3.75pt 7.5pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:18.75pt">
<b><span lang="FR-CA" style="font-size:14.0pt;font-family:"Arial",sans-serif;color:#073763">Jérôme Godbout</span></b><b><span lang="FR-CA" style="font-size:14.0pt;font-family:"Arial",sans-serif"><br>
</span></b><span lang="FR-CA" style="font-size:10.0pt;font-family:"Arial",sans-serif">Développeur Logiciel Sénior / <br>
Senior Software Developer</span><span style="font-size:12.0pt;font-family:"Times New Roman",serif"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td valign="top" style="padding:3.75pt 0cm 3.75pt 7.5pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#073763">p:</span></b><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#073763"> </span><span style="font-size:10.0pt;font-family:"Arial",sans-serif">+1
 (418) 800-1073 ext.:109</span><span style="font-size:12.0pt;font-family:"Times New Roman",serif"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td valign="top" style="padding:3.75pt 0cm 3.75pt 7.5pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#073763"><a href="http://www.amotus-solutions.com/" target="_blank"><span style="color:#1155CC">amotus.ca</span></a><br>
<a href="http://statum-iot.com/" target="_blank"><span style="color:#1155CC">statum-iot.com</span></a><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt"><a href="https://www.facebook.com/LesSolutionsAmotus/"><span style="color:windowtext;text-decoration:none"><img border="0" width="10" height="10" style="width:.1041in;height:.1041in" id="Picture_x0020_3" src="cid:image003.png@01D4E9FD.50AA6910"></span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif"> </span><a href="https://www.linkedin.com/company/amotus-solutions/"><span style="color:windowtext;text-decoration:none"><img border="0" width="10" height="10" style="width:.1041in;height:.1041in" id="Picture_x0020_4" src="cid:image004.png@01D4E9FD.50AA6910"></span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif"> </span><a href="https://twitter.com/AmotusSolutions"><span style="color:windowtext;text-decoration:none"><img border="0" width="10" height="10" style="width:.1041in;height:.1041in" id="Picture_x0020_5" src="cid:image005.png@01D4E9FD.50AA6910"></span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif"> </span><a href="https://www.youtube.com/channel/UCoYpQgsmj1iJZyDjTQ3x8Ig"><span style="color:windowtext;text-decoration:none"><img border="0" width="10" height="10" style="width:.1041in;height:.1041in" id="Picture_x0020_6" src="cid:image006.jpg@01D4E9FD.50AA6910"></span></a><span style="font-size:12.0pt;font-family:"Times New Roman",serif"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td valign="top" style="padding:3.75pt 0cm 3.75pt 7.5pt"></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Martin Marmsoler <martin.marmsoler@gmail.com>
<br>
<b>Sent:</b> April 3, 2019 3:49 AM<br>
<b>To:</b> Jérôme Godbout <godboutj@amotus.ca><br>
<b>Cc:</b> Thiago Macieira <thiago.macieira@intel.com>; interest@qt-project.org<br>
<b>Subject:</b> Re: [Interest] Parsing data from serialport<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">But why I need a new buffer when there already one exist? (the QIODevice and my own buffer or?)<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">My idea: <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Main() {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Connect(readyread, myreadyread)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">} <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">myreadyread() {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If (!canreadline())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">   Return;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Parsedata() ;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">With this idea I have again the problem with the while loop, but I dont need two buffers. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Is it an alternative?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Martin<o:p></o:p></p>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">Jérôme Godbout <<a href="mailto:godboutj@amotus.ca">godboutj@amotus.ca</a>> schrieb am Mi., 3. Apr. 2019, 00:01:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Make sure your reading loop and processing data are separated. Call you read device when needed or into a loop that can take some pause to avoid 100% CPU usage for nothing.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">QByteArray buffer;<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">void ReadDeviceHaveData()<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">{<o:p></o:p></p>
<pre><span style="font-family:"Calibri",sans-serif">   </span><span style="color:olive">while</span>(<span style="color:maroon">serial_port</span><span style="color:#00677C">-><i>bytesAvailable</i></span>()) // This can be dangerous is data keep coming  and might be removed<o:p></o:p></pre>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">{</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">            // You can read bytes per bytes or smaller chunk over here for better reactivity and less memory consumption</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New";color:silver">           
</span><span style="font-size:10.0pt;font-family:"Courier New";color:#092E64">buffer</span><span style="font-size:10.0pt;font-family:"Courier New"">.<span style="color:#00677C">append</span>(<span style="color:maroon">serial_port</span><span style="color:#00677C">->readAll</span>());</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">           
</span>processData();<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New";color:silver">           
</span><span style="font-size:10.0pt;font-family:"Courier New";color:maroon">serial_port</span><span style="font-size:10.0pt;font-family:"Courier New";color:#00677C">-><i>waitForReadyRead</i></span><span style="font-size:10.0pt;font-family:"Courier New"">(<span style="color:navy">5</span>);</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:silver">    
</span>}<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">}<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">void ProcessData()</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">{</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">   int pos = buffer.indexOf(‘\n’);</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New""> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">   while(pos >= 0)</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">   {</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">     QByteArray line = buffer.left(pos);</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">     // Strip trailing \r for windows here</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">     // Do whatever you need with your line, check data integrity</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New""> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">     // Remove the processed data but leave the unprocessed data alone</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">     buffer.remove(0, pos + 1); // Remove \n too</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">     pos = buffer.indexOf(‘\n’);</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">  
</span><span lang="FR" style="font-size:10.0pt;font-family:"Courier New"">}</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Courier New"">}</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Interest <<a href="mailto:interest-bounces@qt-project.org" target="_blank">interest-bounces@qt-project.org</a>>
<b>On Behalf Of </b>Martin Marmsoler<br>
<b>Sent:</b> April 2, 2019 3:58 PM<br>
<b>To:</b> Thiago Macieira <<a href="mailto:thiago.macieira@intel.com" target="_blank">thiago.macieira@intel.com</a>><br>
<b>Cc:</b> <a href="mailto:interest@qt-project.org" target="_blank">interest@qt-project.org</a><br>
<b>Subject:</b> Re: [Interest] Parsing data from serialport</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#674EA7;background:white"> > To be able to roll back, in case your reading from the device didn't result in <br>
what you wanted or you got an error. See QDataStream.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Ah ok I understand.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">So this minimal example <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">QSerialPort sPort;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">sPort.open(QIODevice::ReadOnly);<o:p></o:p></p>
</div>
<div>
<pre>if(sPort.waitForReadyRead(<span style="color:navy">2000</span>)){<o:p></o:p></pre>
<pre>  while<span style="font-family:"Arial",sans-serif;color:silver"> </span><span style="font-family:"Arial",sans-serif">(!<span style="color:#092E64">device</span>.<i><span style="color:#00677C">atEnd</span></i>())<span style="color:silver"> </span>{</span><o:p></o:p></pre>
<pre><span style="color:silver">        </span><span style="color:olive">if</span><span style="color:silver"> </span>(<span style="color:#092E64">device</span>.<i><span style="color:#00677C">canReadLine</span></i>())<span style="color:silver"> </span>{<o:p></o:p></pre>
<pre><span style="color:silver">               </span><span style="color:#092E64">newData</span>.<span style="color:#00677C">push_back</span>(<span style="color:#092E64">device</span>.<span style="color:#00677C">readLine</span>());<o:p></o:p></pre>
<pre><span style="color:silver">               </span><span style="color:#092E64">linesToRead</span>++;<o:p></o:p></pre>
<pre><span style="color:silver">        </span>}<span style="color:silver"> </span><span style="color:olive">else</span><span style="color:silver"> </span>{<o:p></o:p></pre>
<pre><span style="color:silver">               </span><span style="color:olive">return</span>;<o:p></o:p></pre>
<pre><span style="color:silver">        </span>}<o:p></o:p></pre>
<pre><span style="font-family:"Arial",sans-serif;color:silver">               </span><span style="font-family:"Arial",sans-serif">}</span> <o:p></o:p></pre>
<pre>   ...<o:p></o:p></pre>
<pre>}<o:p></o:p></pre>
<pre>works fine, if I go trough it step by step (maybe, because enouth data come in). But if I'm to fast it does not work. <o:p></o:p></pre>
<pre>If I'm using the signal readyRead I will have the same problem, because new data come everytime. So I check that in the <o:p></o:p></pre>
<pre>readyRead function if a complete line come in, and if no complete line I return without doing something otherwise I do <o:p></o:p></pre>
<pre>something with the data? Is this the right way?<o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<pre>Martin<o:p></o:p></pre>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thiago Macieira <<a href="mailto:thiago.macieira@intel.com" target="_blank">thiago.macieira@intel.com</a>> schrieb am Di., 2. Apr. 2019, 18:02:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">On Tuesday, 2 April 2019 07:04:03 PDT Martin Marmsoler wrote:<br>
> Thank you Thiago for your response. But what is transactionstart for?<br>
<br>
To be able to roll back, in case your reading from the device didn't result in <br>
what you wanted or you got an error. See QDataStream.<br>
<br>
-- <br>
Thiago Macieira - thiago.macieira (AT) <a href="http://intel.com" target="_blank">
intel.com</a><br>
  Software Architect - Intel System Software Products<br>
<br>
<br>
<br>
_______________________________________________<br>
Interest mailing list<br>
<a href="mailto:Interest@qt-project.org" target="_blank">Interest@qt-project.org</a><br>
<a href="https://lists.qt-project.org/listinfo/interest" target="_blank">https://lists.qt-project.org/listinfo/interest</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</body>
</html>