一、c++上位机与WiFi小车通讯

基于51单片机WiFi视频机器小车c++上位机开发

  1、首先,单片机、WiFi模块组装完毕后,请确保电脑可以连接小车的WiFi信号。

2、建立c++  CRL项目。

3、配置opencv2.4X,

4、项目连接小车的WiFi视频地址,IP地址和端口

const string cameraAddress = "http://192.168.1.1:8080/?action=stream&type=.mjpg";
System::String^ controlip = "192.168.1.1";
System::String^ port = "2001";

  5、获取小车视频并转化为opencv

vcap.open(cameraAddress);

Mat frame;

vcap.read(frame);

6、与小车进行通讯并发送指令

IPAddress^ ips = IPAddress::Parse(controlip);
IPEndPoint^ ipe = gcnew IPEndPoint(ips, Convert::ToInt32(port));
Socket^ c = gcnew Socket(ipe->AddressFamily, SocketType::Stream, ProtocolType::Tcp);
c->Connect(ipe);

array<Byte>^ up = { 0xFF, 0x00, 0x02, 0x00, 0xFF };//向前 

array<Byte>^ rcode = gcnew array<Byte>(100);             

下面是源码:

 

// 小车追球test2.cpp: 主项目文件。

#include "stdafx.h"


#include "stdafx.h"
#include "opencv2/opencv.hpp"
//#include "conio.h"
//#include "cv.h"
#include "highgui.h"
//#include "cxcore.h"
#include "iostream"
#include "Windows.h"
#include "Xinput.h"


#using <System.dll>


using namespace System;
using namespace System::Net;
using namespace System::Net::Sockets;
using namespace System::Text;
using namespace cv;
using namespace std;


CvCapture* capture = 0;
IplImage* image;
void Hough(IplImage*);
//int style = 0;//小车当前状态:1为停止,2位前进,3位后退,4位左转,5为右转


int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");


cvNamedWindow("camera", CV_WINDOW_AUTOSIZE);
cvMoveWindow("camera", 0, 0);


const string cameraAddress = "http://192.168.1.1:8080/?action=stream&amp;type=.mjpg";
System::String^ controlip = "192.168.1.1";
System::String^ port = "2001";


VideoCapture vcap;
Mat frame;


if (!vcap.open(cameraAddress))
{
Console::WriteLine(L"ERRER");
return -1;
}




IPAddress^ ips = IPAddress::Parse(controlip);
IPEndPoint^ ipe = gcnew IPEndPoint(ips, Convert::ToInt32(port));
Socket^ c = gcnew Socket(ipe->AddressFamily, SocketType::Stream, ProtocolType::Tcp);
c->Connect(ipe);
array<Byte>^ stop = { 0xFF, 0x00, 0x00, 0x00, 0xFF };//停止
array<Byte>^ up = { 0xFF, 0x00, 0x02, 0x00, 0xFF };//向前 
array<Byte>^ down = { 0xFF, 0x00, 0x01, 0x00, 0xFF };//向后
array<Byte>^ left = { 0xFF, 0x00, 0x03, 0x00, 0xFF };//左转
array<Byte>^ right = { 0xFF, 0x00, 0x04, 0x00, 0xFF };//右转
array<Byte>^ left_speed = { 0xFF, 0x02, 0x01, 0x09, 0xFF };//左侧速度为7
array<Byte>^ right_speed = { 0xFF, 0x02, 0x02, 0x04, 0xFF };//右侧速度为7

array<Byte>^ rcode = gcnew array<Byte>(100);
int i = 0;
while (c->Connected)
{

cvWaitKey(10);


vcap.read(frame);
//方向测试----------------------------------------------------------------------------------------------------------------------

i++;


if (i>100)
{
c->Send(stop, stop->Length, SocketFlags::None);//发送指令
}
else{
c->Send(up, up->Length, SocketFlags::None);//发送指令

}


//--------------------------------------------------------------------------------------------------------------------------------

imshow("camera", frame);
}


cvDestroyWindow("camera");
c->Close();
return 0;
}   

 

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Wifi遥控小车使用说明: 本例程采用ESP8266 wifi模块与STM32串口连接,并提供AT指令封装库与STM32通讯,实现如下的通讯方式: 1、硬件部分 Wifi模块丝印图即引脚如下: 硬件连接如下: 2、手机APP部分 APP部分我们采用常用的APP wifi调试软件 ITEAD WIFI,安装完成后打开 如下界面,点击Set up进入设置: 进入后会自动获取到手机的IP,注意手机是连接到一个路由器下的,支持局域网内调试,先设置端口,一般是 8080 然后设置指令,我们使用到了如下红框内的指令,指令协议可以参考工程文件interface.h有如下描述: //指令定义 #define COMM_STOP 'I'//停止 #define COMM_UP 'A'//前进 #define COMM_DOWN 'B'//后退 #define COMM_LEFT 'C'//左转 #define COMM_RIGHT 'D'//右转 指令设置好之后就可以启动服务了,如下点击开始就好了 设置完成后如下,这里记下服务端IP和端口号,我这里是 192.168.31.195,端口 8080 ,然后返回: 3、stm32软件部分 设置完APP软件后,再来修改我们的工程文件,打开工程“wifi遥控小车”,打开main.c文件,修改红框内信息: HOST_NAME和HOST_PORT为手机上面的IP和端口号,SSID为您的路由器名,PSD为路由器密码,修改好后重新编译后下载。 下载完成复位一下,就可以运行了,程序会自动连接手机开启的服务,实现TCP/IP通信,连接成功后,看手机端的设置会有如下提示: 本程序还是用了串口1来输出调试信息,将串口1连接电脑后也会在串口调试助手看到如下信息: 连接成功后即可在如下界面按键,操作小车运行:
### 回答1: 使用C语言可以通过MX Component 4.16与FX5U进行通讯。MX Component是基于Mitsubishi PLC通讯协议的软件组件,可用于与PLC进行数据交互。下面是连接上位机与FX5U PLC的一般步骤: 1. 首先,您需要在计算机上安装MX Component 4.16软件,并确保您具备Mitsubishi FX5U系列PLC的通讯驱动程序。 2. 在C语言的开发环境中,您需要使用相应的头文件来引用MX Component 4.16的函数和方法。通常情况下,这些头文件会随着MX Component的安装一起提供。 3. 在程序中,您需要为MX Component创建对象,并对其进行初始化。这些对象包括PLC连接对象、设备对象和标签对象。PLC连接对象用于建立与FX5U PLC的通信连接。设备对象表示PLC设备,可以设置设备参数和访问设备信息。标签对象则代表PLC上的变量,您可以读取和写入这些变量的值。 4. 使用MX Component的提供的方法,您可以通过读取和写入标签对象实现与PLC的数据交互。例如,使用ReadDeviceBlock函数可以从设备对象中读取连续的变量,并将其存储在缓冲区中。类似地,WriteDeviceBlock函数可用于向设备对象中写入连续的变量。 5. 最后,您可以根据应用程序的需求,使用适当的方法关闭与PLC的连接并释放使用的资源。 需要注意的是,与PLC通信的具体细节可能会因MX Component版本和FX5U PLC型号而有所不同。您可能需要查阅相关的文档和资料以获取更详细的信息。 总之,通过使用C语言和MX Component 4.16,您可以通过上位机与FX5U PLC进行通讯,实现数据的读取和写入,以及其他与PLC相关的操作。 ### 回答2: 使用C语言编写上位机与FX5U通讯可以借助MX Component 4.16库来实现。 MX Component 4.16是三菱底层通讯库,提供了与三菱PLC进行通信的API接口。首先,我们需要在C语言环境中导入MX Component 4.16库,并进行相应的初始化工作。 在MX Component 4.16中,可以通过以下步骤来与FX5U进行通讯: 1. 创建与FX5U的连接:使用MX_CreateInstance函数创建一个MX Component实例。通过MX_OpenPort函数打开与FX5U的通信端口,确保与PLC正确连接。 2. 读取和写入数据:使用MX_ReadData函数可以从FX5U的存储区域中读取数据,使用MX_WriteData函数可以将数据写入FX5U的存储区域。 3. 监听和响应事件:MX Component 4.16提供了一些事件回调函数,用于监听FX5U发送给上位机的事件。通过在C程序中设置回调函数,可以响应FX5U发送的事件。 4. 断开与FX5U的连接:在通讯结束后,使用MX_ClosePort函数关闭与FX5U的通信端口,并使用MX_DestroyInstance函数销毁MX Component实例。 总结来说,使用C语言与FX5U通讯需要使用MX Component 4.16库提供的函数来创建连接、读写数据并响应事件。这样就可以实现上位机与FX5U之间的通信。 ### 回答3: 使用C语言与FX5U通信时,可以使用MX Component 4.16库来实现通信。MX Component是Mitsubishi公司提供的一种通信库,可以在C语言编程环境下与FX5U进行通信。 首先,我们需要在C语言项目中引入MX Component库,并进行相关配置。然后,我们可以使用库提供的函数来建立与FX5U的通信连接。 在进行通信之前,我们需要了解FX5U的通信协议和参数设置。具体来说,需要确定通信所使用的通信端口、协议类型、通信地址等。在连接时,可以通过设置这些参数来与FX5U建立连接。 一旦与FX5U建立了通信连接,我们可以使用MX Component库提供的函数来实现数据的读写操作。例如,可以使用ReadDeviceBlock函数来读取FX5U中的数据块,或使用WriteDeviceBlock函数将数据写入FX5U的数据块。 通过编写合适的C语言代码,我们可以利用MX Component库与FX5U进行双向的数据通信。我们可以根据具体的需求读取和写入FX5U中的数据,实现与FX5U的数据交换和控制。 总结来说,使用C语言与FX5U通信时,可以借助MX Component 4.16库提供的函数来建立通信连接,并进行数据的读写操作。通过合适的配置和编程,我们可以实现与FX5U之间的数据交换和控制。使用C语言与FX5U通信可以灵活地满足项目需求,实现优异的通信性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值