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++
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);
}
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
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();
        }
    }
}
Le ID de la puce test est E00401007C3B07B9

PS : Si un modérateur trouve un meilleur titre ne vous gêner pas à le changer.