小编lin*_*sek的帖子

如何恢复损坏的SQLite3数据库?

这是以前回答的帖子的后续问题:是否有用于在Linux中验证SQLite数据库的命令行实用程序?

如果数据库产生以下错误:

$ sqlite3 mydata.db "PRAGMA integrity_check"
Error: database disk image is malformed
Run Code Online (Sandbox Code Playgroud)

是否有任何清理处理可以将数据库恢复到可用状态?即使有可能丢失一些腐败记录?

谢谢

database sqlite recovery corruption

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

Eclipse:Android设备选择器 - 未知的Android 2.3.4设备

我有一台运行Android 2.3.4的Nexus One手机.我正在尝试使用USB开放附件库构建应用程序.为此,我选择了Google API 10作为构建目标.该项目实际上是Microchip提供的应用程序,我知道该设备可以使用.我手动将应用程序的APK安装到手机上,它可以工作.现在我希望能够调试和修改应用程序.

当我按下"运行"按钮时,就可以选择一个平台了.Android设备选择器窗口在插入Nexus One时会出现以下内容:

Android设备选择器

有任何想法吗?

谢谢,

编辑:我在Linux开发环境中工作.特别是Fedora 14.

debugging android eclipse-plugin

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

C指向结构的双指针

我试图找出一个指向C中结构的双指针,但无法弄清楚出了什么问题...简单来源如下:

typedef struct
{
    int member;
} mystruct;

void myfunc(mystruct **data)
{
    (*data)->member = 1;
}

void main(int argc, char *argv[])
{
    mystruct **data;

    myfunc(data);

    printf("member = %d\n", (*data)->member);
}
Run Code Online (Sandbox Code Playgroud)

这里问了一个类似的问题:如何在C中使用指向结构指针的指针?关于如何通过双指针修改结构的成员.解决方案是(*data)->member = 1;有意义的语法.但在我的小应用程序中,我在执行该行时收到了seg错误.我究竟做错了什么?

谢谢

c struct pointers data-structures

23
推荐指数
3
解决办法
4万
查看次数

如何在Linux中使用Bluez实现蓝牙LE

我正在为BLE演示设置两个Linux系统.显然,一个系统将是外围设备,一个系统将是中央设备.围绕这两种配置我有几个问题.

环境

外围设备设置

第一项业务是通过配置的GATT服务器获得外围系统设置和广告.此时,似乎无法从命令行配置GATT服务器.因此,虽然将USB加密狗带入并通告它是一项简单的任务,但这不允许创建自定义服务和特性.我能找到的GATT服务器的唯一例子是Bluez包中的gatt-example.c文件.所以我下载并构建了最新的bluez-5.23源代码.(http://www.linuxfromscratch.org/blfs/view/svn/general/bluez.html).另外使用--enable-maintainer-mode标志配置强制将gatt-example.c插件构建到bluetoothd中.我从~/bluez-5.23/plugins目录中验证了有bluetoothd-gat-example.o文件的后期构建.这告诉我gatt-example至少是成功构建的.

然后我修改了配置文件以启用LE和属性服务器.

$ sudo vi /etc/bluetooth/main.conf
EnableLE = true           // Enable Low Energy support. Default is false.
AttributeServer = true    // Enable the GATT attribute server. Default is false.
Run Code Online (Sandbox Code Playgroud)

然后只需重启或重启蓝牙守护进程......

中央设备设置

由于中央设备不需要像外围设备那样构建任何特殊插件,我只使用了bluez apt-get.这似乎已根据安装v4.101 bluetoothd -v.

会话设置

然后连接过程应该相当简单.我设置外围设备进行广告宣传,然后与中央设备连接:

外围:

$ sudo hciconfig hci0 up        // Make sure the interface is up
$ sudo hciconfig hci0 leadv     // Set the interface to advertise
Run Code Online (Sandbox Code Playgroud)

中央:

$ …
Run Code Online (Sandbox Code Playgroud)

bluetooth bluetooth-lowenergy bluez gatt

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

我需要实现一种方法来睡眠这个线程,直到它有工作要做

好吧,所以这个问题并不完全是关于线程管理......好吧,等等.我正在寻找这种配置的不同解决方案.我有一些想法,但我正在寻找可以解决问题的任何解决方案.并将权衡利弊,以实现最好的一个.

情况就是这样.

我有一个将生成线程的管理器应用程序.该线程将持续运行并处理通过USB连接到系统的板的串行通信.管理器应用程序促进系统上运行的其他应用程序与此线程之间的通信.线程需要真正执行两件事:

  1. 在可变定时器上通过串行轮询电路板获取样品数据..通常大约每分钟一次(串行总线相当慢,波特率为4800.我无法控制这个)
  2. 促进与经理应用程序的通信.(即其他应用程序将请求样本数据,管理器将请求转发给线程.线程执行操作并返回数据)

我最初的设计很简单,很有效.我使用队列和互斥体来管理经线.所以线程的逻辑如下:

  1. 初始化
  2. 虽然我们没有收到经理的关机命令
  3. 如果我们的计时器已启动,请在电路板上查询数据
  4. 否则,请检查管理器是否有消息发送到队列.如果是这样,请处理它

问题是我没有考虑CPU利用率.99.9%的时间我的线程没有处理任何东西而只是吮吸电源.我需要实现一种方法来睡眠这个线程,直到它有工作要做.所以有几个想法:

使用select()来阻止.这可以基于我需要使用的计时器来阻止,我可以将队列消息传递实现更改为套接字消息传递.相反,线程会打开一个客户端套接字到管理器,管理器会通过套接字将消息传递给线程.然后select()会睡觉,直到fd上有活动或我的计时器启动.

亲:正是我需要的功能.

Con:对于与你共享内存的线程进行通信,套接字是不是有点繁重?

使用信号系统.(在Linux上知识渊博的人可以通过一个实现示例在这里进行管道......我不确定该怎么做.)但是线程可以在计时器的持续时间内休眠,并且如果信号是,则唤醒进行处理收到经理.

Pro:使用共享内存维护当前实现

Con:不确定如何实施.是否有像select()这样的函数可以使用信号而不是fds?

可能是互斥量.我可以阻止,直到经理发布了一个互斥锁.

专业:仍然共享内存

Con:可能需要将计时器处理移动到管理器,这实际上不是一个选项,因为它有其他计时器和关键工作要执行.

请推荐并随意批评.我愿意接受任何有效的选择.请注意,虽然这是在嵌入式系统上运行,但资源使用至关重要.

c linux multithreading pthreads embedded-linux

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

Android Spinner - 如何将列表选择默认为无

我有一个Android表单,需要根据某些选择更新自己.该表格目前由2个Spinners(A和B)组成.在完成Spinner A的选择之前,不会创建微调器B. 选择完成后,B将显示在视图中,并根据A的选择动态填充内容.这是我的代码:

public class MyForm extends Activity 
{   
    private final int SEL_ACTIVATE = 0;
    private final int SEL_DEACTIVATE = 1;

    private static final String[] actionList = {"Activate", "Deactivate" };

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        table = (TableLayout) findViewById(R.id.table);

        showListA(table);
    }

    public void showListA(View v)
    {        
        rowAction = new TableRow(this);

        Spinner spinner = new Spinner(this);
        spinner.setPrompt("Select...");
        spinner.setOnItemSelectedListener(
            new OnItemSelectedListener() 
            {
                public void onItemSelected(AdapterView<?> parent, View v, int position, long id) 
                {
                    switch (position)
                    {
                    case SEL_ACTIVATE:
                    case …
Run Code Online (Sandbox Code Playgroud)

android listeners spinner

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

如何在Expect脚本中使用$符号发送密码

我有一个期望脚本,我需要登录到远程系统并执行命令.此脚本适用于向root帐户提供密码的例外.root密码包含一个我似乎无法工作的美元符号.这是代码

#!/usr/bin/expect
set timeout 3
set username "root"
set password "Pas$word"
set hostname [lindex $argv 0]
log_user 0

send_user "\n#####\n# $hostname\n#####\n"

spawn ssh -q -o StrictHostKeyChecking=no $username@$hostname

expect {
    timeout { send_user "\nFailed to get password prompt\n"; exit 1 }
    eof { send_user "\nSSH failure for $hostname\n"; exit 1 }
    "*assword"
}

send "$password\r"

expect {
    timeout { send_user "\nLogin failed. Password incorrect.\n"; exit 1}
    "*\$ "
}

send_user "\nPassword is correct\n"

expect "$ " { send "ls" }
Run Code Online (Sandbox Code Playgroud)

我在提供密码不包含美元符号的凭据时验证了这一点,但我无法使用root帐户.它总是产生 …

authentication ssh bash expect remote-server

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

Qt - QTableWidget 单元格中的 QIcon

我尝试了多种方法在 QTableWidget 单元格中显示 QIcon,但我不确定为什么它不起作用。我有一个按钮,按下时会在表格中添加一行。这是代码...

void MainWindow::pressed()
{
    QTableWidgetItem *item = new QTableWidgetItem("Hello, world!");
    QTableWidgetItem *icon_item = new QTableWidgetItem;
    QIcon icon("/verified/path/to/icon.png");
    icon_item->setIcon(icon);

    int row = ui->tableFeed->rowCount();
    ui->tableFeed->insertRow(row);
    ui->tableFeed->setItem(row, 0, icon_item);
    ui->tableFeed->setItem(row, 1, item);
}
Run Code Online (Sandbox Code Playgroud)

它只是不起作用。该单元格中没有显示任何内容。有任何想法吗?

编辑:我设置它的 setItem 调用icon是一个错字。实际代码将其设置为QTabeWidgetItem icon_item. 我在上面的代码中更正了它。

icons qt qtablewidget

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

Linux:如何将USB驱动程序分配给设备

这个问题有两个问题:

1-如何从USB设备手动分离驱动程序并附加另一个驱动程序?例如,我有一个设备,当连接自动使用USB存储驱动程序.

// usbview输出

Vendor Id: xxxx
Product Id: xxxx
...
    Number of Interfaces: 2
    Interface Number: 0
        Name: usb-storage
        Number of Endpoints: 2
        ...
    Interface Number: 1
        Name: (none)
        Number of Endpoints: 2
        ...
Run Code Online (Sandbox Code Playgroud)

我不想使用usb-storage驱动程序,因此我在主机上运行了一个应用程序,我在其中使用libusb库来分离usb存储驱动程序然后我声明了接口.然后,我可以在USB设备和主机Linux系统上运行的应用程序之间发送数据.

如何在应用程序外手动分离驱动程序?

2-如何自动分配驱动程序以附加到设备插件上.我目前有一个udev规则设置来自动设置设备权限.

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666"
Run Code Online (Sandbox Code Playgroud)

我可以使用udev规则将驱动程序分配给USB设备上的特定接口吗?例如,如果我想在接口0而不是usb-storage上自动使用usbnet模块,那么在udev中是否可以使用?

谢谢,

(我对StackExchange如何使用它的不同网站或者它们都是一样的有点困惑.这是一个Linux问题所以它也发布在Unix和Linux上.请原谅我,如果它也不应该在这里发布,但是StackOverflow也处理Linux,所以...)

linux usb udev kernel-module linux-kernel

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

是否有用于在Linux中验证SQLite数据库的命令行实用程序?

我正在寻找一个命令行实用程序来验证SQLite数据库.我遇到了一些继承代码的情况,其中一个应用程序无法启动,因为尝试访问数据库会产生以下错误:

database disk image is malformed
Run Code Online (Sandbox Code Playgroud)

所以我需要在应用程序中检测一些验证代码.另外,我需要一个工具,我可以从Linux提示符运行,告诉我数据库是否已损坏.

谢谢

linux sqlite command-line corruption

7
推荐指数
2
解决办法
4804
查看次数