Bonjour tout le monde !
Je dois programmer un logiciel pour lire sur un RFID Reader stronglink et j'ai vraiment pas grand chose pour comprendre comment ça marche : La doc avec la device est en chinois, et je n'ai pas d'exemple en C#. J'ai seulement un pdf avec les fonctions et un exemple en C++.
Je crois être très prêt du but, j'ai la variable dans lequel, je crois, pouvoir trouver le ID, mais dans la doc C++ c'est un type char et moi en C# je chercherais plutôt un type string.
Je vous donne la description de la function, mon code C# et l'exemple C++ :
SL500-User-Manual.pdf
6.5.3 INT WINAPI ISO15693_GET_SYSTEM_INFORMATION P.33
C++
C#
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 void CDemoDlg::OnButtonInventory() { WORD icdev = 0x0000; int status; unsigned char pData[MAX_RF_BUFFER]; unsigned char len; unsigned char type = 0x31; if(!m_bConnectDevice){ MessageBox("Not connect device","Error",MB_OK|MB_ICONERROR); return; } status = rf_init_type(icdev,type); if(status){ MessageBox("rf_init_type failed","Error",MB_OK|MB_ICONERROR); return; } m_edit_uid1.SetWindowText(""); m_edit_uid2.SetWindowText(""); m_edit_uid3.SetWindowText(""); m_edit_uid4.SetWindowText(""); status = ISO15693_Inventorys(icdev,pData,&len); if(status){ MessageBox("ISO15693_Inventorys failed","Error",MB_OK|MB_ICONERROR); return; } for(int i = 0 ;i < len /9;i++ ){ if(i == 0) m_edit_uid1.SetWindowTextEx(&pData[9 * i + 1],8); if(i == 1) m_edit_uid2.SetWindowTextEx(&pData[9 * i + 1],8); if(i == 2) m_edit_uid3.SetWindowTextEx(&pData[9 * i + 1],8); if(i == 3) m_edit_uid4.SetWindowTextEx(&pData[9 * i + 1],8); } MessageBox("INVENTORY success","Success",MB_OK|MB_ICONASTERISK); }
Le ID de la puce test est E00401007C3B07B9
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Runtime.InteropServices; namespace test_RFID_reader { public partial class Form1 : Form { [DllImport("MasterRD.dll")] static extern int rf_init_com(int port, int baud); [DllImport("MasterRD.dll")] static extern int rf_ClosePort(); [DllImport("MasterRD.dll")] static extern int rf_beep(short icdev, int msec); [DllImport("MasterRD.dll")] static extern int ISO15693_Inventorys(short icdev, out int pData, out int pLen); [DllImport("MasterRD.dll")] static extern int rf_get_device_number(out short icdev); [DllImport("MasterRD.dll")] static extern int ISO15693_Get_System_Information(short icdev, char model, out char pUID, out int pData, out int pLen); private int _status; private short _icdev = 0x0000; private int _pData; private int _pLen; private char _pUID; public Form1() { InitializeComponent(); test(); } private void test() { _status = rf_init_com(3, 19200); _status = rf_get_device_number(out _icdev); //MessageBox.Show(_icdev.ToString()); //_status = rf_beep(_icdev, 1000); _status = ISO15693_Inventorys(_icdev, out _pData, out _pLen); //MessageBox.Show(_pData.ToString()); if (_status == 0) { ISO15693_Get_System_Information(_icdev, '1', out _pUID, out _pData, out _pLen); MessageBox.Show(_pData.ToString()); // affiche : 990361856 } //rf_ClosePort(); } } }
PS : Si un modérateur trouve un meilleur titre ne vous gêner pas à le changer.
Partager