2016-02-27 1 views
0

Une petite voiture avec le wifi est connectée à mon ordinateur. Je veux envoyer un paquet de données en hexadécimal (par exemple FF 00 01 00 FF) à lui (IP: 192.168.1.1, Port: 2001) avec Visual Studio 2015.Comment écrire un programme C# pour envoyer une commande hex octets à un port série

Je suis un novice en C# seulement avec quelques connaissances de base de C .. Je viens de recevoir une forme d'API du concepteur de la voiture et d'écrire quelque chose comme ci-dessous. Mais je ne sais pas si elles sont ok pour courir ...

serialPort1.PortName = "COM1"; 
serialPort1.BaudRate = 9600; 
serialPort1.Open(); 
byte [] data= CreateData(0x01, 0x02, 0x03); //design a hex package 
comm=this.SerialPort1;      //I don't know what the "this" mean ? 
RobotEngine2.SendCMD(0, byteData, comm); //this sentence got from the API 

(Je suis désolé que le code doit être laid pour moi un débutant. Mais je serais vraiment reconnaissant si vous pouvez aider à donner . moi des directions Merci)

+1

On ne sait pas ce que vous attendez de CreateData ici, ni ce que vous entendez par "un paquet de données". Cela peut sembler être spécifique au protocole que vous utilisez. Notez que le code que vous avez donné communique sur un port série, * pas * en parlant à un serveur sur une adresse IP ... –

+1

Que se passe-t-il lorsque vous exécutez le code ...? Quelle est ta question? De plus, si le périphérique écoute sur un port, il s'attend probablement à ce que vous vous connectiez via un socket (ou si UDP, envoyez un datagramme). –

Répondre

0

Je l'ai fait quelques recherches et trouvé ce site:. http://www.wifi-robots.com/thread-4718-1-1.html vous devrez traduire et trier le code.

Jusqu'à présent, il semble que vous n'ayez pas besoin d'utiliser le System.IO.Ports parce qu'il est utilisé par l'API.

C'est ce que je pourrais traduire, mais le code fourni par l'API était très salissant:

using System; 
using System.Net; 
using System.Net.Sockets; 
using System.Windows.Forms; 
using WIFIRobotCMDEngineV2; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     String ControlIp = "192.168.1.1"; 
     String Port = "2001"; 
     public WifiRobotCMDEngineV2 RobotEngine2; 
     IPAddress static ips; 
     static IPEndPoint ipe; 
     static Socket socket = null; 
     String CMD_Forward = "FF0000FF"; 

     public Form1() 
     { 
      InitializeComponent(); 
      RobotEngine2 new WifiRobotCMDEngineV2 = ((Object)this.button1); 
     } 
     bool ret = false; 
     private bool InitWIFISocket(controlIp String, String Port) 
     { 
      ips = IPAddress.Parse(controlIp.ToString()); ipe = new IPEndPoint(ips, Convert.ToInt32(port.ToString())); socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType TCP); 
      Socket.connect(ipe); RobotEngine2.SOCKET = socket; RobotEngine2.IPE = ipe; ret = RobotEngine2.SocketConnect(); 
      return ret; 
     } 
     private void Form1_Load(SENDER Object, EventArgs e) { } 
     void button1_Click Private(SENDER Object, EventArgs e) { InitWIFISocket(ControlIp, Port); Label1.Text = ret.ToString(); } 
     void Private button2_Click(SENDER Object, EventArgs e) { SerialPort COMM = new SerialPort(); RobotEngine2.SendCMD(0, CMD_Forward, COMM); 
     } 
    } 
} 

compagnon Désolé, mais vous devez fournir plus d'informations si vous voulez cette question complètement résolu mais espérons que cette aide .