<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Reading /dev/input/js0 file - USB Gamepad Connection</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/af210e05c0/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Runtime/thread/af210e05c0/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Runtime/thread/af210e05c0/</id><updated>2020-08-18T14:27:11.484000Z</updated><subtitle>Recent posts to Reading /dev/input/js0 file - USB Gamepad Connection</subtitle><entry><title>Reading /dev/input/js0 file - USB Gamepad Connection</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/af210e05c0/?limit=25#b313/08be" rel="alternate"/><published>2020-08-18T14:27:11.484000Z</published><updated>2020-08-18T14:27:11.484000Z</updated><author><name>Ingo</name><uri>https://forge.codesys.com/u/ingo/</uri></author><id>https://forge.codesys.com4fd241833a9b3ee3ed31e12ab7573d6425e4703d</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi yangkkokk!&lt;br/&gt;
Welcome to CODESYS Talk!&lt;/p&gt;
&lt;p&gt;"同问" seems to translate to "The same question", but please use english when posting s.th. here. Without using a common language there will be no "Talk" 😉&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Reading /dev/input/js0 file - USB Gamepad Connection</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/af210e05c0/?limit=25#b313" rel="alternate"/><published>2020-08-18T00:25:49.021000Z</published><updated>2020-08-18T00:25:49.021000Z</updated><author><name>yangkkokk</name><uri>https://forge.codesys.com/u/yangkkokk/</uri></author><id>https://forge.codesys.com776c0eaf3578e1b615cd6883d1f4a215f9126443</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;同问 &lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Reading /dev/input/js0 file - USB Gamepad Connection</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/af210e05c0/?limit=25#1580" rel="alternate"/><published>2020-02-27T16:10:18.899000Z</published><updated>2020-02-27T16:10:18.899000Z</updated><author><name>ChrisH</name><uri>https://forge.codesys.com/u/chrish/</uri></author><id>https://forge.codesys.comf11b308087af43775667118dabe8d215dd325857</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi All,&lt;/p&gt;
&lt;p&gt;I'd like to connect a USB game-pad and use it to control things in my application.&lt;br/&gt;
What I've done so far:&lt;br/&gt;
1. Installed: ```&lt;/p&gt;
&lt;p&gt;sudo apt-get install joystick&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;.&lt;span class="nv"&gt;Tested&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="nv"&gt;can&lt;/span&gt; &lt;span class="nv"&gt;see&lt;/span&gt; &lt;span class="nv"&gt;any&lt;/span&gt; &lt;span class="nv"&gt;inputs&lt;/span&gt;: ```

&lt;span class="nv"&gt;jstest&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;input&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;js0&lt;/span&gt;

``` &lt;span class="nv"&gt;Everything&lt;/span&gt; &lt;span class="nv"&gt;looked&lt;/span&gt; &lt;span class="nv"&gt;good&lt;/span&gt;.
&lt;span class="nv"&gt;Response&lt;/span&gt;:
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Driver version is 2.1.0.&lt;br/&gt;
Joystick (Gasia Co.,Ltd PS(R) Gamepad) has 7 axes (X, Y, Z, Rz, Hat0X, Hat0Y, (null))&lt;br/&gt;
and 12 buttons (Trigger, ThumbBtn, ThumbBtn2, TopBtn, TopBtn2, PinkieBtn, BaseBtn, BaseBtn2, BaseBtn3, BaseBtn4, BaseBtn5, BaseBtn6).&lt;br/&gt;
Testing ... (interrupt to exit)&lt;br/&gt;
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:-32767 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:off 11:off&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Had&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;look&lt;/span&gt; &lt;span class="k"&gt;into&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;device&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="k"&gt;Whenever&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="n"&gt;press&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;button&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt; &lt;span class="n"&gt;Bytes&lt;/span&gt; &lt;span class="n"&gt;gets&lt;/span&gt; &lt;span class="n"&gt;written&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="o"&gt;```&lt;/span&gt;

&lt;span class="n"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;input&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;js0&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;hexdump&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Response, Note the first seven digits are the address then the actual 16 Bytes of data follow.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="mi"&gt;0000120&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;d36&lt;/span&gt; &lt;span class="mi"&gt;05&lt;/span&gt;&lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="mi"&gt;376&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt; &lt;span class="mi"&gt;0202&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;d36&lt;/span&gt; &lt;span class="mi"&gt;05&lt;/span&gt;&lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="n"&gt;fff&lt;/span&gt; &lt;span class="mi"&gt;0302&lt;/span&gt;
&lt;span class="mi"&gt;0000130&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;d54&lt;/span&gt; &lt;span class="mi"&gt;05&lt;/span&gt;&lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="mi"&gt;72&lt;/span&gt;&lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="mi"&gt;0202&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;d68&lt;/span&gt; &lt;span class="mi"&gt;05&lt;/span&gt;&lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="mi"&gt;7966&lt;/span&gt; &lt;span class="mi"&gt;0202&lt;/span&gt;
&lt;span class="mi"&gt;0000140&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;d72&lt;/span&gt; &lt;span class="mi"&gt;05&lt;/span&gt;&lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="n"&gt;d5c&lt;/span&gt; &lt;span class="mi"&gt;0202&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;d86&lt;/span&gt; &lt;span class="mi"&gt;05&lt;/span&gt;&lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="n"&gt;fff&lt;/span&gt; &lt;span class="mi"&gt;0202&lt;/span&gt;
&lt;span class="mi"&gt;0000150&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;dc2&lt;/span&gt; &lt;span class="mi"&gt;05&lt;/span&gt;&lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="mi"&gt;0000&lt;/span&gt; &lt;span class="mi"&gt;0202&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;dc2&lt;/span&gt; &lt;span class="mi"&gt;05&lt;/span&gt;&lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="mi"&gt;0000&lt;/span&gt; &lt;span class="mi"&gt;0302&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;So this looked very good as well. The structure in the device file isn't very difficult to reverse engineer so I thought I should be able to read this file in Codesys.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Then i tried to read this file in Codesys&lt;br/&gt;
Variable declaration:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;szFilePath&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;STRING&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="s1"&gt;'/dev/input/js0'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;Buffer&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;STRING&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;16&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Code:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;hFile&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;SysFile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SysFileOpen&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;szFile&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;szFilePath&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;am&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;SysFile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;AM_READ&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;pResult&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;ADR&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;FileOpenResult&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
&lt;span class="nt"&gt;dwRead&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;SysFile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SysFileRead&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;hFile&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;hFile&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;pbyBuffer&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;ADR&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;Buffer&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="nt"&gt;ulSize&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;SIZEOF&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;Buffer&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="nt"&gt;pResult&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;ADR&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;FileReadResult&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
&lt;span class="nt"&gt;SysFileClose&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;hFile&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;hFile&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;However I get in the variable Buffer only some counter which is constantly counting up.&lt;/p&gt;
&lt;p&gt;Has anyone any idea how I can read this file?&lt;/p&gt;
&lt;p&gt;Thank you!&lt;/p&gt;
&lt;p&gt;Regards,&lt;br/&gt;
Chris&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>