小编Arn*_*Arn的帖子

termios VMIN VTIME和阻塞/非阻塞读取操作

我正在尝试为Linux编写一个简单的C串行通信程序.我对阻塞/非阻塞读取和VMIN/VTIME关系感到困惑.

我的问题是,如果我应该根据我是否有阻止/非阻塞打开呼叫来设置VMIN/VTIME?

例如,如果我有以下打开电话:

open( "/dev/ttyS0", O_RDWR|O_NONBLOCK|O_NOCTTY)
Run Code Online (Sandbox Code Playgroud)

我应该将VMIN/VTIME设置为:

.c_cc[VTIME]    = 0;    
.c_cc[VMIN]     = 0;
Run Code Online (Sandbox Code Playgroud)

如果我有阻止模式,如:

open( "/dev/ttyS0", O_RDWR|O_NOCTTY)
Run Code Online (Sandbox Code Playgroud)

我应该将VMIN/VTIME设置为:

.c_cc[VTIME]    = 0;    
.c_cc[VMIN]     = 1;
Run Code Online (Sandbox Code Playgroud)

即使端口打开标志设置正确,VMIN/VTIME设置为什么也没有任何区别?

如果有人能帮助我理解VMIN/VTIME与阻塞/非阻塞端口之间的关系,我将非常感激.

谢谢

linux serial-port

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

从 g_variant_new () 获取结果

我正在学习如何使用这个 g_variant_new() ,这真的让我很困惑。我已阅读https://developer.gnome.org/glib/unstable/glib-GVariant.html#g-variant-new但我无法轻松理解它。

我有一个代码:

#define MM_DBUS_SERVICE "org.freedesktop.ModemManager1"
#define MM_DBUS_PATH "/org/freedesktop/ModemManager1/Modem/0"
#define MM_DBUS_GET_PROPERTIES  "org.freedesktop.DBus.Properties"
....

int i;
    GError *error = NULL;
    GVariant *ret;
    char **paths;
    ret = g_dbus_proxy_call_sync (proxy,
                          "org.freedesktop.DBus.Properties.Get",
                          g_variant_new ("(ss)",
                                      "org.freedesktop.ModemManager1.Modem",
                                      "SignalQuality"),
                          G_DBUS_CALL_FLAGS_NONE, -1,
                          NULL, &error);

    if (!ret) {
            g_dbus_error_strip_remote_error (error);
            g_print ("failed: %s\n", error->message);
            g_error_free (error);
            return;
    }

    g_variant_get (ret, "(v)", &paths);
    g_variant_unref (ret);

    for (i = 0; paths[i]; i++) {
            g_print ("Printing \n");
            g_print ("%s\n", paths[i]);
    }
    g_strfreev (paths);
Run Code Online (Sandbox Code Playgroud)

它编译得很好,但是当它运行时我得到了 seg_fault。测试打印

打印分段错误

我期望这次通话的结果是:

dbus-send --system …
Run Code Online (Sandbox Code Playgroud)

c gdbus

4
推荐指数
1
解决办法
2870
查看次数

Android ViewPager第一次后不显示内容

我正在使用带有片段的抽屉式应用程序。抽屉中的一个选项称为片段,在该片段中,我设置了一个带标签的视图(带有片段)来显示图形。

当我第一次运行该应用程序时,我的选项卡可以正常工作,内容,图形和所有内容都看起来不错。

一旦我单击该片段并转到任何其他片段,然后返回,这些选项卡就会显示正确的标题,但没有内容,也没有任何图形。

这是设置viewpager的主要片段:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

public class StatsMain extends Fragment {
    private ViewPagerAdapter adapter = null;
    private TabLayout tabLayout = null;
    private ViewPager viewPager = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    return inflater.inflate(R.layout.stats_main, container, false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    viewPager = (ViewPager) view.findViewById(R.id.viewpager);
    tabLayout = (TabLayout) view.findViewById(R.id.tabs);

    setupViewPager(viewPager);
    tabLayout.setupWithViewPager(viewPager);

}

private void setupViewPager(ViewPager viewPager) { …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager android-tabs

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