Voor een project heb ik een linksys router aangepast zodat deze signalen aan een microcontroller door geeft (een 8 bits signaal/nummer). Deze signalen/commando's krijgt hij op het moment nog van een in visual basic 6 geschreven programma dat draait op een draadloos met de router verbonden computer. Echter zou ik graag de xbox 360 controller gebruiken als input, en dit lukt mij niet onder vb6. Daarom zou ik graag de code omzetten naar C#, en hier gaat het fout.
De ertoe doende visual basic 6 code:
Toelichting: ttime is hier dus het getal dat moet worden gestuurd, wat in de c# command heet.
Mijn poging de code om te zetten (aan de hand van code die ik op het internet vond):
Toelichting: Command is hier gewoon een int, tussen de 0 en 255 die moet worden verstuurd net als bij de visual basic code. Bij beiden moet dit dus gebeuren naar ip: "192.168.1.1" en poort 1500
Hij geeft geen foutmeldingen met de C# code, dus op zich lijkt de verbinding wel te lukken, het juist verzenden denk ik alleen niet.
Ik hoop dat het voor jullie wel duidelijk is
De ertoe doende visual basic 6 code:
code:
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
| Private Sub Command1_Click() If sock.State = sckClosed Then ' if the socket is closed sock.RemoteHost = lbladdress.Text ' set server adress sock.RemotePort = "1500" ' set server port Label5.Caption = "Connected" sock.Connect ' start connection attempt Else ' if the socket is open sock.Close ' close it Label5.Caption = "Not Connected" End If End Sub Sub motion(ttime As Integer) address = Form1.address output = ttime Rem vbOut address, output 'sock.SendData output & Chr(0) If sock.State = sckConnected Then sock.SendData Chr(output + 1) & Chr(0) Label5.Caption = Chr(output + 1) & Chr(0) Else Label5.Caption = "Not sending data" End If End Sub |
Toelichting: ttime is hier dus het getal dat moet worden gestuurd, wat in de c# command heet.
Mijn poging de code om te zetten (aan de hand van code die ik op het internet vond):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| private void cmdConnect_Click(object sender, System.EventArgs e) { //create a new client socket ... m_socWorker = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); String szIPSelected = txtIPAddress.Text; String szPort = txtPort.Text; int alPort = System.Convert.ToInt16 (szPort,10); System.Net.IPAddress remoteIPAddress = System.Net.IPAddress.Parse(szIPSelected); System.Net.IPEndPoint remoteEndPoint = new System.Net.IPEndPoint(remoteIPAddress, alPort); m_socWorker.Connect(remoteEndPoint); connected = true; } private void send() { command++; char output = (char)command; Object objData = (output) & (char)0; byte[] byData = System.Text.Encoding.ASCII.GetBytes(objData.ToString()); m_socWorker.Send(byData); } |
Toelichting: Command is hier gewoon een int, tussen de 0 en 255 die moet worden verstuurd net als bij de visual basic code. Bij beiden moet dit dus gebeuren naar ip: "192.168.1.1" en poort 1500
Hij geeft geen foutmeldingen met de C# code, dus op zich lijkt de verbinding wel te lukken, het juist verzenden denk ik alleen niet.
Ik hoop dat het voor jullie wel duidelijk is
[ Voor 22% gewijzigd door huub8 op 08-02-2011 15:35 ]