网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月26日漏签0天
树莓派吧 关注:76,521贴子:236,979
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 19回复贴,共1页
<<返回树莓派吧
>0< 加载中...

红外-lirc-求助 mode2 收不到任何输出

  • 只看楼主
  • 收藏

  • 回复
  • 伤啊那伤
  • 活跃吧友
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
想做一个红外接收,
按照网上的教程,安装了lirc,在 mode2 -d /dev/lirc0 后,不管任何按键都没有输出。
以下是信息的截图

配置在config.txt 的最后一行,加了debug=on,可以获得调试信息
使用的in口是18,out是17,都是默认的

用dmesg看到的信息,红框是每次使用mode2就会打印出来的

用python 打印18的值,没有按按键时全是1

按下遥控器会有0出现

但是mode2这一步,不管按什么键,一直没有任何输出
因为不会自己写驱动,所以想解决这个问题,希望有知道的人不吝赐教!感谢!


  • 伤啊那伤
  • 活跃吧友
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
自己顶顶了


2025-08-26 22:52:52
广告
不感兴趣
开通SVIP免广告
  • whxright
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
遇到了同样的问题。


  • whxright
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
意外发现只有在插拔 vcc/gnd的时候才能看到 mode2 的输出。。。


  • whxright
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=99085
看看这个老外


  • 伤啊那伤
  • 活跃吧友
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <stdlib.h>
#include <wiringPi.h>
#include <stdio.h>
#include <sys/time.h>
// /usr/include/python2.7/Python.h
//a.out: gcc nec.c -lpython2.7 -lwiringPi -I/usr/include/python2.7/ -L/usr/lib/python2.7/
//nec.so: gcc nec.c -lpython2.7 -lwiringPi -I/usr/include/python2.7/ -L/usr/lib/python2.7/ -o nec.so -shared -fPIC
int last_code = 0;
#define MSG(...)
#define ERR(...)
//#define MSG(...) printf(__VA_ARGS__)
//#define ERR(...) printf(__VA_ARGS__)
void test(int in_pin)
{
int start,end, state,passtime;
state = LOW;
while (digitalRead(in_pin) == HIGH) // start at low
{}
start = micros();
while (1)
{
while (digitalRead(in_pin) == state)
{}
end = micros();
passtime = end - start;
start = end;
if (state==LOW)
state = HIGH;
else
state = LOW;
ERR("%d=[%d]\n", state, passtime);
}
}
int get_start_code(int in_pin)
{
while (digitalRead(in_pin) == HIGH)
{}
// become low 9ms
int start = micros();
while (digitalRead(in_pin) == LOW)
{}
int end = micros();
int passtime = end - start;
if ( passtime < 8000 || passtime > 10000 )
{
ERR("passtime:%d\n", passtime);
return -1;
}
// once more wait low
while(digitalRead(in_pin) == HIGH)
{
}
passtime = micros() - end;
if (passtime>3375 ) // (2.25+4.5)/2
{
return 1;
}
else
{
// delay the 0.56
while(digitalRead(in_pin) == LOW)
{
}
return 2;
}
// normal ,it can be end
return 1;
}
int get_nec_code(int in_pin)
{
int address=0;
int readdress=0;
int command=0;
int recommand=0;
int state = 0;
int i=0,j=0,code=0,check_code=0;
while ((state = get_start_code(in_pin)) == 0)
{}
if (state == 2)
{
return last_code;
}
for (i=0;i<4;i++)
{
int tmpcode=0;
for (j=0;j<8;j++)
{
while (digitalRead(in_pin) == LOW) // wait for high(0.560ms)
{}
delayMicroseconds(840); // 1: 1.69ms(high), 0: 0.56ms(hight), 0.56(low,next part), (0.56+0.56/2)=0.84
if (digitalRead(in_pin) == LOW)
{
//0
MSG("0");
tmpcode >>=1;
}
else
{
MSG("1");
//1 wait for end
tmpcode >>=1;
tmpcode |= 0x80;
delayMicroseconds(1130);
}
}
MSG("\n");
switch (i)
{
case 0: address=tmpcode;break;
case 1: readdress=tmpcode;break;
case 2: command=tmpcode;break;
case 3: recommand=tmpcode;break;
}
}
// delay the tail
delayMicroseconds(1130);
code = (address <<8) + command;
check_code = (readdress <<8) + recommand;
if ((code | check_code) == 0xffff && (code & check_code) == 0x0 )
{
last_code = code;
return code;
}
ERR("error :%d == %d \n", code, check_code);
return 0;
}
int nec(const int in_pin)
{
wiringPiSetup();
pinMode(in_pin, INPUT);
int nec_code=0;
while (1)
{
nec_code = get_nec_code(in_pin);
MSG("nec_code:%d\n", nec_code);
if (nec_code>0 )
{
return nec_code;
}
}
}
int main(int argc, char **argv)
{
printf("start");
int code = nec(27);
printf("code:%d", code);
code = nec(27);
printf("code2 %d\n", code);
return 0;
}


  • 伤啊那伤
  • 活跃吧友
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/*
//// use pin 27
how to use: c
//compile a.out: gcc nec.c -lpython2.7 -lwiringPi -I/usr/include/python2.7/ -L/usr/lib/python2.7/
./a.out
how to use: python
//compile nec.so: gcc nec.c -lpython2.7 -lwiringPi -I/usr/include/python2.7/ -L/usr/lib/python2.7/ -o nec.so -shared -fPIC
//(fix your python path)
// nec.py
import ctypes
from multiprocessing import Process, Value, Lock
nec_lib = ll("./nec.so")
def get_nec():
return nec_lib.nec(27)
def nec_input(code, state):
print "control get:", code
return state-1
def nec_loop(state):
while (state>0):
code = get_nec()
state = nec_input(code, state)
print "done"
nec_drive = Process(target=nec_loop, args=(11, ) )
nec_drive.start()
while True:
pass
*/


  • 路路飞了
  • 中级粉丝
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主,问题解决了嘛?我也卡在这一步了,怎么处理?


2025-08-26 22:46:52
广告
不感兴趣
开通SVIP免广告
  • 血色碎花裙
  • 中级粉丝
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主问题解决了么?


  • 伍玖壹柒
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主没上来吧,我用了你的代码,执行py,没什么反应, 是不是我用的不对?谢谢


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 19回复贴,共1页
<<返回树莓派吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示