- Welcome, Guest. Please Login or Register
MindFusion  
  Now beta testing first versions of our Scheduler and Virtual Keyboard components for HTML & JavaScript.  
  HomeHelpSearchLoginRegister   
     
     
   
 
Page Index Toggle Pages: 1 Send Topic Print  
Conflict between MSR (Magtek) and Virtual Keyboard
Read 193 times

MikeS   Offline
YaBB Newbies
*
Posts: 5
I Love MindFusion!


   
     
 
Conflict between MSR (Magtek) and Virtual Keyboard
Oct 11th, 2017 at 2:16am
 
Running a Winforms application, the textbox receives invalid / garbage from a magnetic card swipe in keyboard emulation mode when the form has a Virtual Keyboard defined. If we eliminate the Virtual Keyboard the data is sent properly. The application is running on a Windows 10 Tablet. Help....
 
 
 
IP Logged    
 
     

Slavcho   Offline
YaBB Moderator
*****
Posts: 1253
Gender: male
tech.support


   
     
 
Re: Conflict between MSR (Magtek) and Virtual Keyboard
Reply #1 - Oct 11th, 2017 at 8:53am
 
Add a KeyDown handler to the textbox and verify whether it receives same key codes with and without the keyboard present? If the key codes are the same but the printed characters differ, probably the card reader software expects the app to run under a specific keyboard layout (what Windows uses to map virtual key codes to actual characters), and the keyboard initialization code changes it to a different one.

If your keyboard initialization code includes assignment to InputLocale, try removing it. The keyboard itself shouldn't change the keyboard layout automatically, but just in case try moving the card reader initialization code after the keyboard's one - could help if both the reader and the keyboard activate a keyboard layout.

Also if you aren't on v4.4.2, try upgrading to it. Latest version disables a feature where current thread's UI culture was automatically set to match input locale, which might lead to changing textbox' font or character encoding. If you are already on v4.4.2, make sure you haven't set AutoUpdateCulture to true.

Regards,
Slavcho
Mindfusion
 
 
 
IP Logged    
 
     

MikeS   Offline
YaBB Newbies
*
Posts: 5
I Love MindFusion!


   
     
 
Re: Conflict between MSR (Magtek) and Virtual Keyboard
Reply #2 - Oct 11th, 2017 at 9:04pm
 
Hi Slavcho,
Thanks for the quick response.
Tried KeyDown event bad data is the same (key code and display).

Not setting InputLocale, however we did try changing the values without success.

We have version 4.4.2 and AutoUpdateCulture is set to false.

If it helps any, this issue is very specific to Windows 10 Tablet. It works fine on Windows 10 desktop.
 
 
 
IP Logged    
 
     

Slavcho   Offline
YaBB Moderator
*****
Posts: 1253
Gender: male
tech.support


   
     
 
Re: Conflict between MSR (Magtek) and Virtual Keyboard
Reply #3 - Oct 12th, 2017 at 6:53am
 
Quote:
Tried KeyDown event bad data is the same (key code and display).


Do you mean the text box gets different key code values from card reader when you add keyboard to your application? Or the key codes are the same but the characters are bad?

Do the characters look like showing the shift-variant of characters, say !@#$ instead of 1234 (US keyboard layout)?

Regards,
Slavcho
 
 
 
IP Logged    
 
     

MikeS   Offline
YaBB Newbies
*
Posts: 5
I Love MindFusion!


   
     
 
Re: Conflict between MSR (Magtek) and Virtual Keyboard
Reply #4 - Oct 13th, 2017 at 8:55pm
 
To clarify, here is the data returned from a card swipe when the form has a virtual keyboard:

%L6049580600000005^MIKE+!S_112?ET^1512FLEET?;6049580600000005=1512112?

sometimes we will get something like this:
%L6049;60495806000@@@?ET^1512FLEET?;6049580600000005=1512112?;604112

Here is the proper card swipe (no virtual keyboard on the form):

%L6049580600000005^MIKES_FLEET^1512FLEET?;6049580600000005=1512112?

I hope this better illustrates what is going on.

We need to deploy the application soon so any help would be greatly appreciated.

Mike
 
 
 
IP Logged    
 
     

Slavcho   Offline
YaBB Moderator
*****
Posts: 1253
Gender: male
tech.support


   
     
 
Re: Conflict between MSR (Magtek) and Virtual Keyboard
Reply #5 - Oct 13th, 2017 at 10:06pm
 
While the reader is sending data, does it show VirtualKeyboard.KeyPressed event firing if you call Debug.Write from its handler?
 
 
 
IP Logged    
 
     

MikeS   Offline
YaBB Newbies
*
Posts: 5
I Love MindFusion!


   
     
 
Re: Conflict between MSR (Magtek) and Virtual Keyboard
Reply #6 - Oct 14th, 2017 at 3:18pm
 
Hi Slavcho.
A card swipe does not trigger the VirtualKeyboard.KeyPressed event.

Mike
 
 
 
IP Logged    
 
     

Slavcho   Offline
YaBB Moderator
*****
Posts: 1253
Gender: male
tech.support


   
     
 
Re: Conflict between MSR (Magtek) and Virtual Keyboard
Reply #7 - Oct 16th, 2017 at 6:56am
 
Hi Mike,

What key codes does it log with and without the keyboard ?

Code:
textbox.KeyDown += (s, e) => Debug.WriteLine("down: " + e.KeyValue + " mod:" + e.Modifiers);
textbox.KeyUp += (s, e) => Debug.WriteLine("up: " + e.KeyValue + " mod:" + e.Modifiers);
 



Is the form created in response to some card reader event indicating it will start sending data? The keyboard initialization code sets modifier key states a few times and resets them afterwards. If the reader sends key events just then, that could change key code to character mapping. You should be able to work around it by creating the form earlier and just setting it visible when needed.

I've browsed Magtek documentation - keyboard emulation is listed as legacy compatibility mode there, and recommends using a dedicated card reader API that will read directly through USB interface. Not sure if this applies to model you are using.

Regards,
Slavcho
 
 
 
IP Logged    
 
     

MikeS   Offline
YaBB Newbies
*
Posts: 5
I Love MindFusion!


   
     
 
Re: Conflict between MSR (Magtek) and Virtual Keyboard
Reply #8 - Oct 31st, 2017 at 3:08pm
 
Hi Slavcho,

I'll run the code and let you know, but based on my previous tests the data is correct without the keyboard and incorrect with the keyboard.

I am not creating a form, the form is already there, the card swipe is happening into a textbox.

Wierd thing is, everything works fine on multiple PC's, but when trying on multiple brands of tablets (Atom CPU's) it does not work.  Could it have something todo with the much slower Atom processors?
 
 
 
IP Logged    
 
     

Slavcho   Offline
YaBB Moderator
*****
Posts: 1253
Gender: male
tech.support


   
     
 
Re: Conflict between MSR (Magtek) and Virtual Keyboard
Reply #9 - Oct 31st, 2017 at 7:35pm
 
Hi,

I guess there might be some difference showing from the version of the operating system or .NET framework running on Atom processors. What's the MSR device' exact model?

Here's something similar happening -
https://serverfault.com/questions/64594/magnetic-stripe-reader-over-terminal-ser
ver-has-random-uppercase-lowercase-nonse

Is your application running directly on the tablet, or it shows through remote connection too by chance? Does it make any difference whether you type on the keyboard before using the reader?

You could also check if you can't read the data directly through .NET POS APIs as in https://code.msdn.microsoft.com/windowsapps/Magnetic-stripe-reader-30aa2ca5

Regards,
Slavcho
 
 
 
IP Logged    
 
     
Page Index Toggle Pages: 1 Send Topic Print