使用板载BeagleBone黑色LED的4位十进制到二进制转换器
4-bit Decimal to Binary Converter using on-board BeagleBone Black LEDs
我正试图编写一个c++程序,将1到15之间的数字转换为二进制,并通过板载BeagleBone Black LED显示输出。
#include<iostream>
#include<stdio.h>
#include<unistd.h>
using namespace std;
int main(){
FILE *BINHandle = NULL;
const char *LED0="/sys/class/leds/beaglebone:green:usr0/brightness";
const char *LED1="/sys/class/leds/beaglebone:green:usr1/brightness";
const char *LED2="/sys/class/leds/beaglebone:green:usr2/brightness";
const char *LED3="/sys/class/leds/beaglebone:green:usr3/bringtness";
int a, b, c;
cout << "Enter an number between 1 and 15" << endl;
cin >> a;
cout << a << " in binary is:" << endl;
for(b = 3; b >=0; b--){
c = a >> b;
if(c & 1){
if(b = 3){
BINHandle = fopen(LED3, "r+");
fwrite("1", sizeof(char), 1, BINHandle);
fclose(BINHandle);
}
else{
BINHandle = fopen(LED3, "r+");
fwrite("0", sizeof(char), 1, BINHandle);
fclose(BINHandle);
}
if(b = 2){
BINHandle = fopen(LED2, "r+");
fwrite("1", sizeof(char), 1, BINHandle);
fclose(BINHandle);
}
else{
BINHandle = fopen(LED2, "r+");
fwrite("0", sizeof(char), 1, BINHandle);
fclose(BINHandle);
}
if(b = 1){
BINHandle = fopen(LED1, "r+");
fwrite("1", sizeof(char), 1, BINHandle);
fclose(BINHandle);
}
else{
BINHandle = fopen(LED1, "r+");
fwrite("0", sizeof(char), 1, BINHandle);
fclose(BINHandle);
}
if(b = 0){
BINHandle = fopen(LED0, "r+");
fwrite("1", sizeof(char), 1, BINHandle);
fclose(BINHandle);
}
else{
BINHandle = fopen(LED0, "r+");
fwrite("0", sizeof(char), 1, BINHandle);
fclose(BINHandle);
}
}
}
usleep(2000000);
BINHandle = fopen(LED0, "r+");
fwrite("0", sizeof(char), 1, BINHandle);
fclose(BINHandle);
BINHandle = fopen(LED1, "r+");
fwrite("0", sizeof(char), 1, BINHandle);
fclose(BINHandle);
BINHandle = fopen(LED2, "r+");
fwrite("0", sizeof(char), 1, BINHandle);
fclose(BINHandle);
BINHandle = fopen(LED3, "r+");
fwrite("0", sizeof(char), 1, BINHandle);
fclose(BINHandle);
}
现在,每当该位为1时,我都会尝试单独访问LED。我没有得到错误,但当我运行代码并输入数字时,当我应该得到输出时,我会得到"Segmentation fault"
const char *LED0="/sys/class/leds/beaglebone:green:usr0/brightness";
const char *LED1="/sys/class/leds/beaglebone:green:usr1/brightness";
const char *LED2="/sys/class/leds/beaglebone:green:usr2/brightness";
const char *LED3="/sys/class/leds/beaglebone:green:usr3/bringtness";
const char *BIN = (LED3<<3)+(LED2<<2)+(LED1<<1)+LED0;
你不能那样把绳子连在一起。
如果你想从多个文件中读取或写入多个文件,你需要打开每个文件并分别读取/写入。
相关文章:
- 如何在C ++中将二进制字符串128位转换为十进制字符串?
- (第 1 位 + 第 2 位)以十进制数表示
- 十进制,包括负到 32 位二进制转换器
- 将大端格式的位融合为预期的十进制值,同时忽略第一个位
- 如何将值从十进制存储为二进制,使其在 C++ 中将值保存在 6 位
- 如何在C++中进行32位十进制浮点数乘法?
- 字符串到 Unicode,Unicode 到十进制码位 (C++)
- 您能否给我一个 16 位(或更多)十进制数,该十进制数仅在第 15 位正确转换为双精度浮点圆
- 在 C++ 中使用按位运算符理解十进制到二进制函数的问题
- 将十进制的舍入到第十位,但在C 中显示了百分之一
- C 如何将双重转换为字符串,因此它仅在十进制后显示2位数字
- 使用位操作员将十进制转换为八十位
- 将长 64 位十进制转换为二进制
- 我可以将指针地址(即十六进制整数)转换为C 中的十进制和八分位基础
- 将双精度转换为精度超过 5 位十进制数字的字符串
- 用正确的位大小在c++中将十进制转换为二进制
- 将十进制转换为 32 位二进制
- 位到十进制转换的集合
- Visual Studio 2015的std::strtod()中存在十进制错误,64位
- 二进制-十进制负位集