"Usally when a sale is started we get sevral messages from the OnDeviceActivityStart()/ OnDeviceActivityEnd() callbacks, followed by one from OnSaleResponse(). But sometimes we get nothing."
To clarify, in the case where you don't get an OnSaleResponse, do you also not get the onDeviceActivityStart/End as well? Do you construct a CloverConnector per transaction (not recommended) or do you maintain a connection to the device? Can you check the logs on the device?
Simon, is the email associated with your community account a good contact? We have made some improvements to the USB protocol in the SDK and would like to see if you are interested in giving it a try.
Yes the email on my account is a good contact and we would be happy to give it a try.
Ok, we are going to release a beta version of the SDK. It should be available on NuGet sometime tomorrow (MST).
No we don't get any messages from the Clover the OnDeviceActivityStart/ OnDeviceActivityEnd calls also stop. We create the CloverConnector if IsReady returns false or if we haven't created a connector yet.
In our logs we can see the connector getting created, then several successful sales throughout the day before a failed one.
Where are the logs on the device? We have tried checking Event Viewer but the logs only appear to last for an hour or two, so we have yet to catch them in time.
You can get the device logs via ADB - adb logcat. However, I expect the device is sending messages and you just aren't receiving them. You create the CloverConnector if IsReady returns false? You want to create a CloverConnector when your app is started and dispose of it when your app is closed. I suspect your apps management of the CloverConnector has forced your app into a state where it is no longer receiving messages.
We create the connector if IsReady = false, in-case the connection was dropped at somepoint, so we can re-initialize the connection, but if you say only one connection is the way to go we'll try that and see how it goes.
I am not sure we would be able to get the log files using ADB, as it would mean going to the customers site (some times 100-200 miles away) with a laptop or installing a bunch of dev tools on the tills.
Exiting sendMessageSync() Got Message:{"id":"982","method":"ACK", … Got Message:{"id":"983","method":"TX_START_RESPONSE",… Got Message:{"id":"984","method":"UI_STATE", …
14:13:10 - receiveMessagesThread Exception: Read failed, 0 bytes returned 14:13:10 - 4 : Terminating receiveMessagesThreadI am not sure if this is relevant or not, but it not in any other event logs we have see.
Do you know if the merchant is using USB 2 or 3? If they are using 2 can you have them try 3? Have you considered using Secure Network Pay Display instead of USB pay display? HTTP is much more stable protocol for handling disconnects/reconnects, etc.
I will ask the support team to look into the USB ports and get back to you, I am not sure USB 3 is avilable on all the POS system we have out in the wild. If Secure Network Pay Display is a drop in replacement for the USB pay display, we'll look into adding an option for that.
We have been able to track this problem down to USBCloverTransport.cs
, and have logged a bug report on GitHub Here with steps to replicate it.
Thanks Simon. I will create an internal issue for this and assign it to the Windows team.
Hi do you have any update on when this fix will be release? It’s still causing issues for our customers.
Hi Simon, some issues were discovered with the fix unfortunately. I do not have an update other than that. I am wondering if it would be possible for you to consider looking at converting some of your merchants to Secure Network Pay Display?
2 People are following this question.