小编moz*_*ors的帖子

Linux中的Ctrl + C中断事件处理

我正在开发一个使用C++并使用Linux GNU C Compiler编译的应用程序.但是,我想调用一个函数,因为用户使用CtrlC 键来中断脚本.我该怎么办?任何答案将不胜感激.

c c++ linux signals

25
推荐指数
3
解决办法
7万
查看次数

一段时间后,从Arduino到Raspberry Pi的串行接收与PySerial停止

我正在开发一个项目,我必须一次收到大约25个字符的数据,以便在Raspberry Pi中处理它.下面是生成我想从Arduino接收的一些数据的示例代码:

char i =0;
char  a =0;
char b=0;


void setup(){

 Serial.begin(9600);
 for(i=0;i<25;i++){

    Serial.print('l');}
    Serial.print('\n');
    delay(2000);
}


void loop(){

 for(i=0;i<25;i++){
     for(a=0;a<i;a++){
      if((a==9)||(a==19)||(a==24))
          Serial.print('l');
      else
          Serial.print('d');   
     }
     for(b=0;b<25-i;b++){
          Serial.print('l');
     }


     delay(2000);
  }
}
Run Code Online (Sandbox Code Playgroud)

它发送一行像这样的'llllddddllldddd ...'这行是25个字符的长度.现在,我希望通过Raspberry Pi获得此功能.这是我正在尝试的代码:

ser = serial.Serial('/dev/AMA0',9600,timeout=1)
ser.open()

try:
   serial_data = ser.readline()
   print serial_data
except serial.serialutil.SerialException:
   pass
Run Code Online (Sandbox Code Playgroud)

此代码非常正确地接收数据5秒钟,然后突然停止接收.

此外,当我尝试以下操作时,我没有输出或输入/输出错误.

serial_data = ser.readline()
print serial_data
Run Code Online (Sandbox Code Playgroud)

编辑1: 好的,我现在评论了这个例外.它给出以下错误:

 raise SerialException('device reporst rediness to read but returned no data (device disconnected?)')
serial.serialutil.SerialException: device reports readiness to read but returned no data …
Run Code Online (Sandbox Code Playgroud)

python serial-port arduino pyserial raspberry-pi

10
推荐指数
2
解决办法
3万
查看次数

检查数组是否包含另一个PHP数组

可能重复:
检查数组是否包含另一个数组的所有元素

我之前已经向Stackoverflow发布了这样的内容,但答案并不能完全满足我.这就是为什么我再次发布问题,但一直在改变问题.

有些人帮我构造了一个函数,它检查array($GroupOfEight[$i])一个多维元素是否array($GroupOfEight)等于另一个数组($ stackArray),忽略数组中的数字顺序.

但是,我需要检查的是所提到的是否array($stackArray)包含array($GroupOfEight[$i])多维中的任何一个array($GroupOfEight),这意味着main array($stackArray)可以包含更多的元素subarrays($GroupOfEight[$i]).

这是我到目前为止收集的一个工作代码,但需要修改为我想要的版本:

 <?php
    $GroupOfEight = array (
                          array(0,1,3,2,4,5,7,6),
                          array(4,5,6,7,15,12,13,14),
                          array(12,13,15,14,8,9,11,10),
                          array(2,6,14,10,3,7,15,11),
                          array(1,3,5,7,13,15,9,11),
                          array(0,4,12,8,1,5,13,9),
                          array(0,1,3,2,8,9,11,10)
                );


    $stackArray = array(0,4,12,1,9,8,5,13,9,2,5,2,10);
    /*$stackArray gets value with POST Method by URL parameter.
    This is just the example. As you see this array contains 
    $GroupOfEight[4], and also it contains many other numbers.*/


    /* The function given below checks if $stackArray equals any
    of the subarrays of $GroupOfEight. …
Run Code Online (Sandbox Code Playgroud)

php arrays array-intersect multidimensional-array

8
推荐指数
2
解决办法
2万
查看次数

有没有办法检查Yocto映像中将安装的软件包的确切列表?

在基于Yocto的Embedded Linux发行版中,我真的很感兴趣,可以在执行映像构建配方之前,从将要构建并安装到映像文件的每个相关层中查找软件包/配方/内核模块的完整列表:

bitbake my-image-minimal
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?在这方面的任何指导是值得赞赏的。

提前致谢。

embedded-linux bitbake yocto

8
推荐指数
3
解决办法
6772
查看次数

使JFxt中的JTextArea或JEditorPane可滚动

我一直在研究Swing,以便用Java构建一个css编辑器.我一直试图在JTextArea中导出CSS和HTML(我将在创建.css文档之后.)这是我的主要布局在单击"Build"菜单项后调用的GridLayout.

package csseditor_gui_built;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JScrollBar;
import javax.swing.text.DefaultCaret;
import java.awt.Font;
import java.awt.Color;


public class ExportGridLayout extends JFrame {
    public ExportGridLayout(String HTML, String CSS){


        GridLayout layout = new GridLayout(1,2,2,2);
        setLayout(layout);

        JTextArea textAreaHtml = new JTextArea();
        JTextArea textAreaCss = new JTextArea();

        //Creating a new font.
        Font fontumuz = new Font("Courier New", Font.PLAIN, 12);

        // Setting constructor strings
        textAreaHtml.setText(HTML);
        textAreaCss.setText(CSS);

        //Additional details..
        textAreaHtml.setEditable(false);
        textAreaCss.setEditable(false);

        //Appending font to the textArea's
        textAreaHtml.setFont(fontumuz);
        textAreaCss.setFont(fontumuz);

        // Adding the …
Run Code Online (Sandbox Code Playgroud)

java swing jscrollpane jtextarea

7
推荐指数
1
解决办法
6563
查看次数

使用 Babeltrace 构建 Perf(用于 Perf 到 CTF 的转换)

我正在尝试使用 TraceCompass 来进一步调查我的系统跟踪。为此,您需要 CTF 格式,在 Linux 中有两种可能的方法来获取它,据我所知:

  1. 使用 LTTng 进行跟踪并使用 CTF 格式
  2. 使用“perf data Convert”从 perf.data 创建 CTF 数据

我一直在尝试使用第二个选项,因为第一个选项需要安装跟踪点,而我从 perf 获得的内容对我来说已经足够了。所以假设我有我的 perf.data 可用,

perf data convert --to-ctf=./ctf 
Run Code Online (Sandbox Code Playgroud)

结果是: 没有编译版本支持。 深入研究lwn的在线资源,我发现如果没有babeltrace,这种转换是不可用的。为了安装 babeltrace 我尝试了以下方法:

第一个:

sudo apt-get install libbabeltrace-ctf-dev libbabeltrace-ctf1 libbabeltrace1 libbabeltrace-dev python3-babeltrace
Run Code Online (Sandbox Code Playgroud)

这并没有完全解决以下问题:没有编译版本支持。

第二个

我尝试过从源代码构建 babeltrace。我事先挖掘并找到了它的所有依赖项:

sudo apt-get install dh-autoreconf bison libdw-dev libelf-dev flex uuid-dev libpopt-dev
git clone git://git.efficios.com/babeltrace.git
cd babeltrace
./bootstrap
sudo ./configure --prefix=/opt/libbabeltrace LDFLAGS=-L/usr/local/lib
sudo make -j4 prefix=/opt/libbabeltrace
sudo make install prefix=/opt/libbabeltrace
Run Code Online (Sandbox Code Playgroud)

然后尝试了,

LD_LIBRARY_PATH=/opt/libbabeltrace/lib perf data convert …
Run Code Online (Sandbox Code Playgroud)

linux trace linux-kernel perf babeltrace

7
推荐指数
1
解决办法
2289
查看次数

检查数组是否包含另一个数组的所有元素

我正在设计一个电气工程应用.但是,我坚持这个:我有以下数组

<?php 
// Static Array
$GroupOfEight = array (
                      array(0,1,3,2,4,5,7,6),
                      array(4,5,6,7,16,12,13,14),
                      array(12,13,15,14,8,9,11,10),
                      array(2,6,14,10,3,7,15,11),
                      array(1,3,5,7,13,15,9,11),
                      array(0,4,12,8,1,5,13,9),
                      array(0,1,3,2,8,9,11,10)
                      );
?>
Run Code Online (Sandbox Code Playgroud)

我有另一个阵列,但这个是一维的.

<?php
$myStack = array(0,1,3,2,4,5,7,6); //Dynamic, gets value by POST method.
?>
Run Code Online (Sandbox Code Playgroud)

我想要做的是检查$ myStack是否等于$ GroupOfEight数组的任何子数组.(数字排序并不重要.脚本应该只检查每个元素是否包含.如果它们的顺序相同,那就不重要了.)

以下是我到目前为止解决这个问题的方法:

<?php
//Check if stackArray contains 8group
for($i=0; $i<count($GroupOfEight);$i++)
for($j=0; $j<count($GroupOfEight[$i]); $j++){
    //$containsSearch = count(array_intersect($search_this,$all)) == count($search_this);
    $containsSearch = count(array_intersect($stackArray,$GroupOfEight[$j])) == count($stackArray);
    echo $containsSearch;
}
?>
Run Code Online (Sandbox Code Playgroud)

请帮我纠正我的代码或向我介绍这个问题的解决方案,谢谢.

编辑:它应该只提供1个索引号.例如,stackArray是0,1,3,2,4,1,2,3,它应该找到匹配相同数字的GroupOfEight [N],而不管数字的顺序如何.如果有匹配的情况,我应该得到N.

php arrays array-intersect multidimensional-array

6
推荐指数
1
解决办法
2843
查看次数

改变树莓派的时钟速度(underclock)

我一直在尝试研究在多核系统开发项目中更改 Raspberry Pi 中时钟速度的影响。在这方面,我必须更改 Raspberry Pi 3 的时钟频率。

据我从互联网上读到,Raspberry Pi 使用动态缩放来调整其时钟速度。即当负载低于100%时,时钟速度为600Mhz,当负载为100%时,它切换到1.2Ghz以提供更好的性能。

到目前为止,我已经获得了以下信息,但还没有能够为 Raspberry Pi 设置恒定的时钟频率:

1- 使用 cpufrequutils 包,

cpufreq-set -g userspace
cpufreq-set -f 1.2Ghz
Run Code Online (Sandbox Code Playgroud)

cpufreq-info 查看结果

2- 设置通过 /boot/config.txt

arm-freq=800
Run Code Online (Sandbox Code Playgroud)

3-写入内核文件,例如:

echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
Run Code Online (Sandbox Code Playgroud)

我还没有理解这三种方法之间的确切区别,也无法设置恒定频率。由于树莓派3默认只能在600Mhz和1.2Ghz之间切换,所以当我通过cpufreq-info查看cpu当前的时钟速度时,我看到的是600Mhz或1.2Ghz。

如何设置600Mhz和1.2Ghz以外的不同频率,比如把这些值改成750Mhz-1000Mhz或者干脆做成750Mhz-750Mhz;在这方面,无需编译新内核。

如果有任何关于问题的缺失信息,请在下面评论,我会尽力提供。

非常感谢任何帮助。

干杯,

linux cpu-speed

6
推荐指数
0
解决办法
8506
查看次数

如何使用 libwebsockets C 库发送 JSON 数据?

如何使用 libwebsockets C 库发送 JSON 数据?

我已经安装并尝试了示例代码,但是我看不到任何关于如何将数据发送到 localhost:someport 的示例。任何帮助将不胜感激。

这是 libwebsockets 的网站:http ://libwebsockets.org/trac/libwebsockets

这是 test-client.c 文件:http : //git.libwebsockets.org/cgi-bin/cgit/libwebsockets/tree/test-server

任何帮助将不胜感激。

c c++ json websocket

5
推荐指数
1
解决办法
8378
查看次数

在返回输出之前在后台运行的Python子进程

我有一些Python代码,我想用perf调试.为此我想使用子进程.以下命令返回进程的指令相关信息,直到通过Ctrl ^ C退出命令.

perf stat -p <my_pid>
Run Code Online (Sandbox Code Playgroud)

现在,我想在后台运行Python代码,直到我希望能够终止其操作并打印命令输出.显示我的意思:

x = subprocess.call(["perf","stat","-p",str(GetMyProcessID())])

.. CODE TO DEBUG ..

print x   # I want to terminate subprocess here and output 'x'
Run Code Online (Sandbox Code Playgroud)

现在,我想确定在'print x'行做什么来终止进程并检查输出.任何想法/帮助表示赞赏.

提前干杯谢谢,

python linux subprocess linux-kernel perf

5
推荐指数
2
解决办法
783
查看次数