<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.arm.com/utility/feedstylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Event lost when sending through the USB to receiver</title><link>https://community.arm.com/developer/tools-software/tools/f/keil-forum/33102/event-lost-when-sending-through-the-usb-to-receiver</link><description> 
Hi 

 
I am using stm32f103RBT6 Microcontroller For sending timestamp in
millisecond through usb to a receiver . The program works fine when
when i am testing in keil uvision before sending through usb but
after sending through usb in receiver software</description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>RE: Event lost when sending through the USB to receiver</title><link>https://community.arm.com/thread/64419?ContentTypeID=1</link><pubDate>Tue, 12 Jan 2016 09:16:50 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:e6d7a588-7c96-4d6d-ab39-92175438759a</guid><dc:creator>Asif Mostafiz</dc:creator><description>&lt;p&gt;&lt;p&gt;
I posted a image here&lt;/p&gt;

&lt;p&gt;

&lt;a href="http://www.electro-tech-online.com/threads/event-lost-when-sending-through-the-usb-to-receiver.146840/"&gt;www.electro-tech-online.com/.../&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
This is the code for receiver software&lt;/p&gt;

&lt;p&gt;
Communication file&lt;/p&gt;

&lt;p&gt;
#include &amp;quot;communication.h&amp;quot;&lt;br /&gt;
#include &amp;lt;QStringList&amp;gt;&lt;br /&gt;
#include &amp;quot;msgbox.h&amp;quot;&lt;br /&gt;
#include &amp;quot;hiddevice.h&amp;quot;&lt;/p&gt;

&lt;p&gt;
Communication::Communication()&lt;br /&gt;
{ thread = new QThread(); mutex; rcv = new Reception((QObject*)this);
rcv-&amp;gt;moveToThread(thread);
connect(this,SIGNAL(Rx_Again()),rcv,SLOT(doWork()));&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
void Communication::StartRX()&lt;br /&gt;
{ if(thread-&amp;gt;isRunning() == false) thread-&amp;gt;start();
QMetaObject::invokeMethod(rcv, &amp;quot;doWork&amp;quot;, Qt::QueuedConnection);&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
int Communication::ConfigPort(QByteArray Str)&lt;br /&gt;
{ return serial.Init(0x483,0x473);&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
int Communication::Recv()&lt;br /&gt;
{ int res = 0; if(mutex.tryLock()) { res = serial.Read(32);
mutex.unlock(); } return res;&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
void Communication::CallRxAgain()&lt;br /&gt;
{ emit Rx_Again();&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
int Communication::SaveRXdata()&lt;br /&gt;
{ return 0;&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
void Communication::ComRX()&lt;br /&gt;
{ emit Rx_Finish();&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
void Communication::Send(Packet* data)&lt;br /&gt;
{ int err; // serial.ClearBufferTX();
memset(&amp;amp;serial.bufferTX,0,HidDevice::BUFFER_SIZE);
memcpy(&amp;amp;serial.bufferTX[0], data-&amp;gt;Pack()-&amp;gt;data(),
data-&amp;gt;Pack()-&amp;gt;size()); err = serial.Write(serial.bufferTX,
32);&lt;/p&gt;

&lt;p&gt;
}&lt;/p&gt;

&lt;p&gt;
void Communication::ClosePort()&lt;br /&gt;
{ serial.Close();&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
QByteArray Communication::getRX_Data()&lt;br /&gt;
{ QByteArray res = QByteArray((char*)serial.bufferRX,31); return
res;&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
void Communication::run()&lt;br /&gt;
{&lt;/p&gt;

&lt;p&gt;
}&lt;/p&gt;

&lt;p&gt;
Communication::~Communication()&lt;br /&gt;
{ if(thread-&amp;gt;isRunning()) thread-&amp;gt;deleteLater();&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
/******************************&lt;br /&gt;
M&amp;#39;todo para recep&amp;#39;&amp;#39;o dos dados&lt;br /&gt;
********************************/&lt;br /&gt;
Reception::Reception(QObject* t)&lt;br /&gt;
{ comclass = t;&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
/****************************&lt;br /&gt;
M&amp;#39;todo para recep&amp;#39;&amp;#39;o dos dados&lt;br /&gt;
*****************************/&lt;br /&gt;
void Reception::doWork()&lt;br /&gt;
{ int recvBytes = -1; while( (recvBytes =
((Communication*)comclass)-&amp;gt;Recv()) &amp;lt; 0 ) { if (recvBytes &amp;lt;
0) printf(&amp;quot;RecvBytes &amp;lt; 0 !!!&amp;quot;); }&lt;/p&gt;

&lt;p&gt;
((Communication*)comclass)-&amp;gt;ComRX();&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
Hid device File&lt;/p&gt;

&lt;p&gt;
#include &amp;quot;hiddevice.h&amp;quot;&lt;/p&gt;

&lt;p&gt;
HidDevice::HidDevice()&lt;br /&gt;
{ memset(&amp;amp;bufferTX[0], 0, BUFFER_SIZE); memset(&amp;amp;bufferRX[0],
0, BUFFER_SIZE);&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
//
*****************************************************************************&lt;br /&gt;

/// @brief Inicializa a HID&lt;br /&gt;
/// @fn int SerialPort:: Init(QByteArray s)&lt;br /&gt;
/// param[in] QByteArray s&lt;br /&gt;
/// @brief Serial port address&lt;br /&gt;
/// retval SProcess Status: Failed-1; 0-Success&lt;br /&gt;
//
*****************************************************************************&lt;br /&gt;

int HidDevice::Init(unsigned short vendor_id, unsigned short
product_id)&lt;br /&gt;
{ int res;&lt;br /&gt;
#define MAX_STR 255 wchar_t wstr[MAX_STR]; // Open the device using
the VID, PID, // and optionally the Serial number. handle =
hid_open(vendor_id, product_id, NULL); // res =
hid_get_manufacturer_string(handle, wstr, MAX_STR); //
qDebug(&amp;quot;Manufacturer String: %s\n&amp;quot;, wstr); // Read the Product String
res = hid_get_product_string(handle, wstr, MAX_STR); qDebug(&amp;quot;Product
String: %ls\n&amp;quot;, wstr); hid_set_nonblocking(handle,0);&lt;/p&gt;

&lt;p&gt;
if(handle==0) return 0; else return 1;&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
void HidDevice::Close()&lt;br /&gt;
{ if (handle &amp;gt; 0) hid_close(handle);&lt;/p&gt;

&lt;p&gt;
}&lt;/p&gt;

&lt;p&gt;
int HidDevice::Read(void)&lt;br /&gt;
{ return Read(BUFFER_SIZE);&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
int HidDevice::Read(int nb)&lt;br /&gt;
{ int n_bytes_rx = 0, timeout_flag = 1; // HidDevice::ClearBuffers();
memset (bufferRX, 0, nb);//zera o buffer de recepcao timeout_flag =
hid_read(handle, bufferRX, nb); if (timeout_flag &amp;lt; 0) n_bytes_rx =
TIMEOUT; return n_bytes_rx;&lt;br /&gt;
}&lt;/p&gt;

&lt;p&gt;
int HidDevice::Write(unsigned char *buffer_tx, int n_bytes)&lt;br /&gt;
{ int counter; counter = hid_write(handle, buffer_tx, n_bytes);
return counter;&lt;br /&gt;
}&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>