树莓派小车By 树莓派爱好者ITJoker(通过C socket通信实现树莓派视频小车)(二)
前面的方法可以参照(一)来配置GPIO口。
下面是代码。。。仅供参考,转载请注明出处。
1. 先输入以下指令,再复制代码,Ctrl+X 输入Y 回车 保存。
sudo nano start.c
#include "car.h"
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#define IN1 0 // wiringPi GPIO0(pin11) car.GPIO
#define IN2 1
#define IN3 2
#define IN4 3
#define IN5 4 //Ultrasound module.GPIO send
#define IN6 5 // accept
/* Write By ITJoker
Time:2.18.2.4
Version:1.0
*/
int up()
{
wiringPiSetup() ;
pinMode (IN1, OUTPUT) ;
pinMode (IN2, OUTPUT) ;
pinMode (IN3, OUTPUT) ;
pinMode (IN4, OUTPUT) ;
digitalWrite(IN1, HIGH) ; delay () ;
digitalWrite(IN2, LOW) ; delay () ;
digitalWrite(IN3, HIGH) ; delay () ;
digitalWrite(IN4, LOW) ; delay () ;
}
int down()
{
wiringPiSetup() ;
pinMode (IN1, OUTPUT) ;
pinMode (IN2, OUTPUT) ;
pinMode (IN3, OUTPUT) ;
pinMode (IN4, OUTPUT) ;
digitalWrite(IN1, LOW) ; delay () ;
digitalWrite(IN2, HIGH) ; delay () ;
digitalWrite(IN3, LOW) ; delay () ;
digitalWrite(IN4, HIGH) ; delay () ;
}
int right()
{
wiringPiSetup() ;
pinMode (IN1, OUTPUT) ;
pinMode (IN2, OUTPUT) ;
pinMode (IN3, OUTPUT) ;
pinMode (IN4, OUTPUT) ;
digitalWrite(IN1, LOW) ; delay () ;
digitalWrite(IN2, HIGH) ; delay () ;
digitalWrite(IN3, HIGH) ; delay () ;
digitalWrite(IN4, LOW) ; delay () ;
}
int left()
{
wiringPiSetup() ;
pinMode (IN1, OUTPUT) ;
pinMode (IN2, OUTPUT) ;
pinMode (IN3, OUTPUT) ;
pinMode (IN4, OUTPUT) ;
digitalWrite(IN1, HIGH) ; delay () ;
digitalWrite(IN2, LOW) ; delay () ;
digitalWrite(IN3, LOW) ; delay () ;
digitalWrite(IN4, HIGH) ; delay () ;
}
int stop()
{
wiringPiSetup() ;
pinMode (IN1, OUTPUT) ;
pinMode (IN2, OUTPUT) ;
pinMode (IN3, OUTPUT) ;
pinMode (IN4, OUTPUT) ;
digitalWrite(IN1, LOW) ; delay () ;
digitalWrite(IN2, LOW) ; delay () ;
digitalWrite(IN3, LOW) ; delay () ;
digitalWrite(IN4, LOW) ; delay () ;
}
int main(int argc, char *argv[])
{
int fd, new_fd, struct_len, numbytes,i;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
char buff[BUFSIZ];
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons();//port 8888
server_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(server_addr.sin_zero), );
struct_len = sizeof(struct sockaddr_in); fd = socket(AF_INET, SOCK_STREAM, );
while(bind(fd, (struct sockaddr *)&server_addr, struct_len) == -);
printf("Bind Success!\n");
while(listen(fd, ) == -);
printf("Listening....\n");
printf("Ready for Accept,Waitting...\n");
new_fd = accept(fd, (struct sockaddr *)&client_addr, &struct_len);
printf("Get the Client.\n");
// numbytes = send(new_fd,"Welcome to my server\n",21,0);
while((numbytes = recv(new_fd, buff, BUFSIZ, )) > )
{
buff[numbytes] = '\0';
printf("%s\n",buff);
if(send(new_fd,buff,numbytes,)<)
{
perror("write");
return ;
}
//txtz=find(buff,sizeof(buff),'u')
//strcmp(buff,'u')==0
if(buff[]=='u')
up();
else if(buff[]=='d')
down();
else if(buff[]=='r')
right();
else if(buff[]=='l')
left();
else if(buff[]=='s')
stop();
}
close(new_fd);
close(fd);
return ;
}
2.为了编写方便,建立makedile。
sudo nano makefile
编写内容如下:
start:start.o
gcc start.c -o start -lwiringPi
clean:
rm -f start start.o
3.最后 输入指令:
make
树莓派小车By 树莓派爱好者ITJoker(通过C socket通信实现树莓派视频小车)(二)的更多相关文章
- 树莓派小车By 树莓派爱好者ITJoker(通过python socket通信实现树莓派视频小车)(一)
本文由树莓派爱好者ITJoker 编辑,转载请注明出处.本人也有新浪博客同样是树莓派爱好者ITJoker 所需材料:树莓派2B或者2B以上,L2985n驱动板,若干排线,电池及电池盒,usb无线网卡( ...
- StarRTC , AndroidThings , 树莓派小车,公网环境,视频遥控(二)小车端
原文地址:http://blog.starrtc.com/?p=94 1 创建工程IDE:Android Studio 3.1:File>New>New Project>输入项目名& ...
- GL-inet路由器当主控制作WIFI视频小车
以前也用单片机做过WIFI小车,但是单片机没有自带WIFI,仍然需要用到小路由器作为图传和控制信号传输.既然肯定要用到路由器,那何不直接用路由器作为主控呢,这样就省掉了单片机.这次作为主控的GL-in ...
- 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (二) 发送自定义数据
在我的项目里,树莓派主要作为中心节点,用于接收数据,Arduino作为子节点,用于发送数据,考虑到以后会有很多子节点,但又不至于使得代码过于繁琐,因此所有的传输数据添加一个头部编号用于区分不同节点. ...
- 树莓派个人实测 Q&A(最新修改使用Manjaro连接远程桌面) (二)
以下内容使用和http://www.eeboard.com/bbs/thread-5191-1-1.html所在的帖子一样的风格,不过原作者是window下的操作,本人的都是在manjaro linu ...
- 树莓派和荔枝派,局域网socket 通信
在虚拟机上面实现了socket 之间的通信之后,突发奇想,想要实现树莓派和 荔枝派zero之间的通信. 1.直接将虚拟机下面的程序复制过来,重新编译并且运行.发现是没有办法进行通信的.客户端一直报错: ...
- stm32 视频小车
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 ...
- StarRTC , AndroidThings , 树莓派小车,公网环境,视频遥控(三)手机端
原文地址:http://blog.starrtc.com/?p=111 这篇来介绍一下整个项目的手机端部分.在上一篇里我们已经将sdk导入到项目中了,下边直接用即可. 1 登录StarRTC的服务跟小 ...
- StarRTC , AndroidThings , 树莓派小车,公网环境,视频遥控(一)准备工作
原文地址:http://blog.starrtc.com/?p=48 啥也不说,先来个视频看看效果 视频播放器 00:00 00:54 概述为了体现StarRTC的实时音视频传输能 ...
随机推荐
- 模块(一)——re模块
re模块下的常用方法: import re ret = re.findall('a', 'eva egon yuan') # 返回所有满足匹配条件的结果,放在列表里 print(ret) #结果 : ...
- JavaScript正则表达式验证大全(收集)
以下函数调用方式: ? 1 2 3 4 function check() { var bb = document.getElementById("txt_id").value;// ...
- 2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路
这篇文章主要是介绍下C题的解题思路,首先我们对这道C题进行一个整体的概括,结构如下: C题:经济类 第一问:发现危险人群. 发现:欺诈的方式开始.雇佣或浪漫的承诺. 数据→确定特定的经济萧条地区→确定 ...
- XYZZY(spfa求最长路)
http://acm.hdu.edu.cn/showproblem.php?pid=1317 XYZZY Time Limit: 2000/1000 MS (Java/Others) Memor ...
- 移动App,AJAX异步请求,实现简单的增、删、改、查
用ajax发异步请求时,要注意url."AppServer"为后台项目名,"LoginServlet.action"为web.xml中的<url-patt ...
- [国嵌攻略][103][Linux内核模块基础]
什么是内核模块 Linux内核的整体结构非常庞大,其中包含的组件也非常多,如何使用这些组件.一种方式是把所有的组件都编译进内核文件,即zImage或bzImage,但这样会导致一个问题,占用内存过多. ...
- 关于Swing窗体有时候要放大缩小边框才能显示问题?
有时候会出现编写swing窗体后添加的组件在run之后显示不出来的问题.如图: 搜了下解决办法.此时如果是程序里面有panel组件的话,应该这样: labels[i] = new Label(lett ...
- iframe及与页面之间的通信
获取iframe对象 iframe元素本身是位于父级页面中的,所以你可以像一个普通元素一样的使用和操作它 代表了iframe内容window对象是作为一个页面的属性加入到iframe中的, 为了让父级 ...
- Java客户端API
添加依赖 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookee ...
- java if与for循环的题
//打印一个4*5的空心长方形 /* for (int i = 0; i < 5;i++ ) { if (i == 0 | i == 4) { ...