Хобрук: Ваш путь к мастерству в программировании

Как написать программу на С# для отправки команды шестнадцатеричных байтов в последовательный порт

К моему компьютеру подключена маленькая машина с Wi-Fi. Я хочу отправить на него пакет данных в шестнадцатеричном формате (например, FF 00 01 00 FF) (IP: 192.168.1.1, порт: 2001) с помощью Visual Studio 2015.

Я новичок в C #, только с некоторыми базовыми знаниями C. Я только что получил API от автомобильного дизайнера и написал что-то, как показано ниже. Но я не уверен, что они в порядке, чтобы бежать...

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 

(Мне жаль, что код должен быть уродливым для меня, такого новичка. Но я был бы очень признателен, если бы вы могли помочь мне дать некоторые указания. Спасибо.)


  • Неясно, что вы ожидаете от CreateData здесь или что вы подразумеваете под пакетом данных. Похоже, это может быть связано с протоколом, который вы используете. Обратите внимание, что код, который вы дали, взаимодействует через последовательный порт, не взаимодействует с сервером по IP-адресу... 27.02.2016
  • Что происходит, когда вы запускаете код...? Какой у Вас вопрос? Кроме того, если устройство прослушивает порт, оно, вероятно, ожидает, что вы подключитесь к нему через сокет (или, если UDP, отправит дейтаграмму). 27.02.2016

Ответы:


1

Я немного покопался и нашел этот сайт: http://www.wifi-robots.com/thread-4718-1-1.html Вам придется перевести его и разобраться с кодом.

Пока похоже, что вам не нужно использовать System.IO.Ports, потому что он используется API.

Это то, что я мог перевести, но код, предоставленный API, был очень запутанным:

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);
        }
    }
}

Извините, приятель, но вам нужно будет предоставить дополнительную информацию, если вы хотите, чтобы этот вопрос был решен полностью, но надеюсь, что это поможет.

27.02.2016
Новые материалы

Решения DBA Metrix
DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

Начало работы с Блум
Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...