精华内容
下载资源
问答
  • 一、操作系统介绍 ...声卡: win10电脑自带声卡、罗技USB摄像头声卡、Android手机自带声卡都可以获取声音数据 二、需求介绍 使用QT本身代码在linux平台、Android平台、windows平台实时获取声卡...

    一、操作系统介绍

    Linux系统:  ubuntu18.04 64位

    Android系统:  Android 8.1/9.0

    windows系统:  win10

    QT版本:  5.12

    声卡: win10 电脑自带声卡、罗技USB摄像头声卡、Android手机自带声卡都可以获取声音数据

    完整项目代码下载(下载可编译运行,不懂可以私信):  https://download.csdn.net/download/xiaolong1126626497/19354758

    二、需求介绍

    使用QT本身代码在linux平台、Android平台、windows平台实时获取声卡的音频数据(PCM)。

    后面可以配合ffmpeg进行编码压缩处理,完成远程语言对讲功能、视频监控的语音功能。

    三、实现方式

    QT里处理音频数据需要用到以下几个头文件:

    #include <QAudio>    
    #include <QAudioFormat>
    #include <QAudioInput>
    #include <QAudioOutput>
    #include <QIODevice>

    在pro工程文件里需要加上:

    QT += multimedia

    四、实例代码

    下面代码功能:采集声卡的音频数据存放到文件,再播放出来。

    代码在win10、ubuntu18.04、Android8.1、android9.0都测试通过。

    mainwin.cpp代码:

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    //设置录音的时间--ms
    #define AUDIO_INPUT_TIME 10000
    
    
    //#define ANDROID_DEVICE
    
    
    #ifdef ANDROID_DEVICE
    //设置保存文件的路径
    #define SAVE_FILE_PATH "/sdcard/DS_XIAOLONG/test.raw"
    #else
    //设置保存文件的路径
    #define SAVE_FILE_PATH "test.raw"
    #endif
    
    
    /*
     * 设置QT界面的样式
    */
    void MainWindow::SetStyle(const QString &qssFile)
    {
        QFile file(qssFile);
        if (file.open(QFile::ReadOnly)) {
            QString qss = QLatin1String(file.readAll());
            qApp->setStyleSheet(qss);
            QString PaletteColor = qss.mid(20,7);
            qApp->setPalette(QPalette(QColor(PaletteColor)));
            file.close();
        }
        else
        {
            qApp->setStyleSheet("");
        }
    }
    
    //日志信息显示
    void MainWindow::Log_Display(QString text)
    {
        ui->plainTextEdit->insertPlainText(text);
    }
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        this->SetStyle(":/images/blue.css" );        //设置样式表
        this->setWindowIcon(QIcon(":/images/log.ico")); //设置图标
        this->setWindowTitle("录音机");
    
        //创建工作目录
    #ifdef ANDROID_DEVICE
        QDir dir;
        if(!dir.exists("/sdcard/DS_XIAOLONG"))
        {
            if(dir.mkdir("/sdcard/DS_XIAOLONG"))
            {
                Log_Display("/sdcard/DS_XIAOLONG目录创建成功.\n");
            }
            else
            {
                Log_Display("/sdcard/DS_XIAOLONG目录创建失败.\n");
            }
        }
    #endif
        //进度条更新
        progressBar_val=0;
        ui->progressBar->setRange(0,AUDIO_INPUT_TIME);
        ui->progressBar->setValue(0);
        connect(&timer_progressBar, SIGNAL(timeout()), this, SLOT(update_progressBar()));
    }
    
    
    void MainWindow::stopRecording()
    {
      Log_Display("停止录音.\n");
      audio_in->stop();
      destinationFile.close();
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    //录音状态
    void MainWindow::handleStateChanged_input(QAudio::State newState)
    {
     switch (newState) {
         case QAudio::StoppedState:
             if (audio_in->error() != QAudio::NoError) {
                 // Error handling
                 Log_Display("录音出现错误.\n");
             } else {
                 // Finished recording
                 Log_Display("完成录音\n");
             }
             break;
         case QAudio::ActiveState:
             // Started recording - read from IO device
             Log_Display("开始从IO设备读取PCM声音数据.\n");
             break;
         default:
             // ... other cases as appropriate
             break;
     }
    }
    
    //开始采集音频数据
    void MainWindow::on_pushButton_clicked()
    {
        static bool flag1=1;
        if(flag1) //只需要运行一次
        {
            flag1=0;
            //设置录音的格式
            auido_input_format.setSampleRate(16000); //设置采样率以对赫兹采样。
            auido_input_format.setChannelCount(1);   //将通道数设置为通道。
            auido_input_format.setSampleSize(16);   /*将样本大小设置为指定的sampleSize(以位为单位)通常为8或16,但是某些系统可能支持更大的样本量。*/
            auido_input_format.setCodec("audio/pcm"); //设置编码格式
            auido_input_format.setByteOrder(QAudioFormat::LittleEndian); //样本是小端字节顺序
            auido_input_format.setSampleType(QAudioFormat::UnSignedInt); //样本是无符号整数
    
            //选择默认设备作为输入源
            QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice();
            Log_Display(tr("当前的录音设备的名字:%1\n").arg(info.deviceName()));
    
            //判断输入的格式是否支持,如果不支持就使用系统支持的默认格式
            if(!info.isFormatSupported(auido_input_format))
            {
              auido_input_format=info.nearestFormat(auido_input_format);
              /*
               * 返回与系统支持的提供的设置最接近的QAudioFormat。
                 这些设置由所使用的平台/音频插件提供。
                 它们还取决于所使用的QAudio :: Mode。
              */
            }
            //当前设备支持的编码
            Log_Display("当前设备支持的编码格式:\n");
            QStringList list=info.supportedCodecs();
            for(int i=0;i<list.size();i++)
            {
                Log_Display(list.at(i)+"\n");
            }
    
            Log_Display(tr("当前录音的采样率=%1\n").arg(auido_input_format.sampleRate()));
            Log_Display(tr("当前录音的通道数=%1\n").arg(auido_input_format.channelCount()));
            Log_Display(tr("当前录音的样本大小=%1\n").arg(auido_input_format.sampleSize()));
            Log_Display(tr("当前录音的编码格式=%1\n").arg(auido_input_format.codec()));
            audio_in = new QAudioInput(auido_input_format, this);
            connect(audio_in,SIGNAL(stateChanged(QAudio::State)), this, SLOT(handleStateChanged_input(QAudio::State)));
        }
    
        if(audio_in->state()==QAudio::StoppedState)
        {
           // qDebug()<<"没有处理任何数据.\n";
            //设置采集的时间
            QTimer::singleShot(AUDIO_INPUT_TIME,this,SLOT(stopRecording()));
            destinationFile.setFileName(SAVE_FILE_PATH);
            destinationFile.open( QIODevice::WriteOnly | QIODevice::Truncate);
            audio_in->start(&destinationFile);
            progressBar_val=0;
            ui->progressBar->setFormat("录音进度%p");
            timer_progressBar.start(1000); //开始定时器--显示进度条
        }
    }
    
    //更新进度条
    void MainWindow::update_progressBar()
    {
        progressBar_val+=1000; //1000ms
        if(progressBar_val>=AUDIO_INPUT_TIME)timer_progressBar.stop();
        ui->progressBar->setValue(progressBar_val);
    }
    
    //开始播放音频
    void MainWindow::on_pushButton_2_clicked()
    {
        static bool flag=1;
        if(flag)
        {
            flag=0;
            QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
            if(!info.isFormatSupported(auido_input_format))
            {
              Log_Display("后端不支持原始音频格式,无法播放音频.\n");
              return;
            }
            //当前设备支持的编码
            Log_Display("当前设备支持的编码格式:\n");
            QStringList list=info.supportedCodecs();
            for(int i=0;i<list.size();i++)
            {
                Log_Display(list.at(i)+"\n");
            }
            audio_out = new QAudioOutput(auido_input_format,this);
            connect(audio_out,SIGNAL(stateChanged(QAudio::State)), this, SLOT(handleStateChanged_out(QAudio::State)));
        }
        sourceFile.setFileName(SAVE_FILE_PATH);
        sourceFile.open(QIODevice::ReadOnly);
        audio_out->start(&sourceFile);
        progressBar_val=0;
        ui->progressBar->setFormat("播放进度%p");
        timer_progressBar.start(1000); //开始定时器--显示进度条
    }
    
    //播放音频的反馈信息
    void MainWindow::handleStateChanged_out(QAudio::State newState)
    {
        switch (newState){
              case QAudio::IdleState:
                  // Finished playing (no more data)
                  audio_out->stop();
                  sourceFile.close();
                  Log_Display("音频播放完成.\n");
                  break;
    
              case QAudio::StoppedState:
                  // Stopped for other reasons
                  if (audio_out->error() != QAudio::NoError) {
                     Log_Display("播放音频出现错误.\n");
                  }
                  break;
              default:
                  // ... other cases as appropriate
                  break;
          }
    }
    
    //查询可用的音频设备列表
    void MainWindow::on_pushButton_3_clicked()
    {
        foreach(const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
             Log_Display(tr("Device name:%1\n").arg(deviceInfo.deviceName()));
    }
    

    mainwin.h代码:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QtNetwork/QUdpSocket>
    #include <QAudio>     //这五个是QT处理音频的库
    #include <QAudioFormat>
    #include <QAudioInput>
    #include <QAudioOutput>
    #include <QIODevice>
    #include <QFile>
    #include <QTimer>
    #include <QDir>
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        void SetStyle(const QString &qssFile);
        QFile sourceFile;   // class member.
        QFile destinationFile;   // Class member
        QAudioFormat auido_input_format;
        QTimer timer_progressBar;
        int progressBar_val;
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
        QAudioInput *audio_in;
        QAudioOutput *audio_out;
        void Log_Display(QString text);
    private slots:
        void update_progressBar();
        void on_pushButton_clicked();
        void stopRecording();
        void handleStateChanged_input(QAudio::State newState);
        void handleStateChanged_out(QAudio::State newState);
        void on_pushButton_2_clicked();
    
        void on_pushButton_3_clicked();
    
    private:
        Ui::MainWindow *ui;
    };
    #endif // MAINWINDOW_H
    

    ui界面:

     

     

    注意:声音录制是否正常,需要看下面这些参数是否正确。 

            //设置录音的格式
            auido_input_format.setSampleRate(16000); //设置采样率以对赫兹采样。
            auido_input_format.setChannelCount(1);   //将通道数设置为通道。
            auido_input_format.setSampleSize(16);   /*将样本大小设置为指定的sampleSize(以位为单位)通常为8或16,但是某些系统可能支持更大的样本量。*/
            auido_input_format.setCodec("audio/pcm"); //设置编码格式
            auido_input_format.setByteOrder(QAudioFormat::LittleEndian); //样本是小端字节顺序
            auido_input_format.setSampleType(QAudioFormat::SignedInt); //在ubuntu下测试,这里设置为有符号整数录制的声音才正常
    

     

     

    下面公众号里有QT、C++、C的基础全套学习教程:

    展开全文
  • 图解iPhone开发入门教程

    万次阅读 热门讨论 2010-03-18 00:05:00
    现在的智能手机越来越风行了,其中尤以Apple的iPhone和Google的Android系统最为流行,这里我将向大家介绍iPhone开发的基础知识。为了便于初学者尽快上手,我尽量以代码加截图的方式加以说明。 要想进行iPhone开发,...

    现在的智能手机越来越风行了,其中尤以Apple的iPhone和Google的Android系统最为流行,这里我将向大家介绍iPhone开发的基础知识。为了便于初学者尽快上手,我尽量以代码加截图的方式加以说明。

     

    要想进行iPhone开发,Mac和iPhone是必不可少的,虽然有人通过一些手段也能在pc上装上Mac,使用上“黑苹果”,但毕竟不是正统,经常会出现这样那样的问题,比如无线不行,声卡不行之类的问题,因此Mac最好还是要有的;至于iPhone,虽然可以通过模拟器在电脑上查看程序的运行效果,但有些功能只能在真机上运行,因此iPhone也是必备条件。我使用的是MacBook Pro 990以及iPhone一代,现在大家应该普遍都用iPhone 3G或3GS了吧。

     

    好,闲言少续,任何程序开发的第一课都是从经典的hello world开始的,我也不能免俗,本节课将在iPhone上打印出Hello World字符串。过程如下:

     

    1,首先需要下载iPhone SDK,地址是 http://developer.apple.com/,如下图所示:

     

     

    2, iPhone SDK中包含了Apple提供的开发工具:Xcode,Interface Builder以及Instrument等等,完全免费,在成功注册并激活账号后就可以下载了,该SDK容量非常大,大概有2.9G左右,因此需要下载很长时间。

     

    3,下载完毕后就可以安装了,安装过程非常简单,直接双击下载后的dmg文件即可安装,安装过程大概需要10分钟左右。

     

    4,安装完毕后在Developer/Application目录中找到Xcode.app双击运行,这就是Apple为我们提供的开发工具,可以进行Mac与iPhone开发,不妨把它放到Dock上。

     

    5,启动Xcode后新建一个iPhone OS项目,命名为HelloWorld,方式为选择左边的iPhone OS下面的Application后再选择右边的View-based Application,如下图所示,之后单击Choose按钮,这时Xcode提示你输入项目名称,直接输入HelloWorld即可:

     

     

     

    6,在新建的项目中不作任何事情,直接单击Build and Run按钮编译并运行程序,程序运行结果如下图所示:

     

     

     

    7,可以看到程序能够顺利运行并显示出iPhone模拟器,里面是一个空的界面,毕竟我们还什么没有写呢。

     

    8,现在准备在界面上显示Hello World字符串,需要编写一些代码了,iPhone和Mac开发主要使用Objective-C语言,这是C语言的超集,对于熟悉C++和Java的读者应能很快上手,只是Objective-C的使用语法有些不同,花些时间适应一下即可。

     

    9,打开HelloWorldViewController.m文件,在其中的viewDidLoad函数中编写如下代码(注意:该函数默认是被注释掉的,需要先取消注释再编写代码),完整的函数实现如下图所示:

     

     

    10,再次单击Build and Run按钮运行程序,模拟器显示的结果如下图所示,成功显示出了Hello World字符串!

     

     

     

    本节我并没有介绍iPhone开发所涉及的细节,只是通过一个简单的实例介绍了iPhone开发的流程,目的是帮助大家尽快上手,培养自信,后面我们将深入iPhone开发的具体过程中,下次课见 :-)

    展开全文
  • 当你阅读实体书的时候,可以用手机或者平板电脑打开这些文件来观看源代码; “相关教程”文件夹包含了VirtualBox和Bochs软件的下载、安装和配置教程,建议认真阅读,包括那些已经会使用这两款软件的人。原因是,要...
  • 现在的智能手机越来越风行了,其中尤以Apple的iPhone和Google的Android系统最为流行,这里我将向大家介绍iPhone开发的基础知识。为了便于初学者尽快上手,我尽量以代码加截图的方式加以说明。   要想进行iPhone...

    现在的智能手机越来越风行了,其中尤以Apple的iPhone和Google的Android系统最为流行,这里我将向大家介绍iPhone开发的基础知识。为了便于初学者尽快上手,我尽量以代码加截图的方式加以说明。

     

    要想进行iPhone开发,Mac和iPhone是必不可少的,虽然有人通过一些手段也能在pc上装上Mac,使用上“黑苹果”,但毕竟不是正统,经常会出现这样那样的问题,比如无线不行,声卡不行之类的问题,因此Mac最好还是要有的;至于iPhone,虽然可以通过模拟器在电脑上查看程序的运行效果,但有些功能只能在真机上运行,因此iPhone也是必备条件。我使用的是MacBook Pro 990以及iPhone一代,现在大家应该普遍都用iPhone 3G或3GS了吧。

     

    好,闲言少续,任何程序开发的第一课都是从经典的hello world开始的,我也不能免俗,本节课将在iPhone上打印出Hello World字符串。过程如下:

     

    1,首先需要下载iPhone SDK,地址是 http://developer.apple.com/,如下图所示:

     

     

    2, iPhone SDK中包含了Apple提供的开发工具:Xcode,Interface Builder以及Instrument等等,完全免费,在成功注册并激活账号后就可以下载了,该SDK容量非常大,大概有2.9G左右,因此需要下载很长时间。

     

    3,下载完毕后就可以安装了,安装过程非常简单,直接双击下载后的dmg文件即可安装,安装过程大概需要10分钟左右。

     

    4,安装完毕后在Developer/Application目录中找到Xcode.app双击运行,这就是Apple为我们提供的开发工具,可以进行Mac与iPhone开发,不妨把它放到Dock上。

     

    5,启动Xcode后新建一个iPhone OS项目,命名为HelloWorld,方式为选择左边的iPhone OS下面的Application后再选择右边的View-based Application,如下图所示,之后单击Choose按钮,这时Xcode提示你输入项目名称,直接输入HelloWorld即可:

     

     

     

    6,在新建的项目中不作任何事情,直接单击Build and Run按钮编译并运行程序,程序运行结果如下图所示:

     

     

     

    7,可以看到程序能够顺利运行并显示出iPhone模拟器,里面是一个空的界面,毕竟我们还什么没有写呢。

     

    8,现在准备在界面上显示Hello World字符串,需要编写一些代码了,iPhone和Mac开发主要使用Objective-C语言,这是C语言的超集,对于熟悉C++和Java的读者应能很快上手,只是Objective-C的使用语法有些不同,花些时间适应一下即可。

     

    9,打开HelloWorldViewController.m文件,在其中的viewDidLoad函数中编写如下代码(注意:该函数默认是被注释掉的,需要先取消注释再编写代码),完整的函数实现如下图所示:

     

     

    10,再次单击Build and Run按钮运行程序,模拟器显示的结果如下图所示,成功显示出了Hello World字符串!

     

     

     

    本节我并没有介绍iPhone开发所涉及的细节,只是通过一个简单的实例介绍了iPhone开发的流程,目的是帮助大家尽快上手,培养自信,后面我们将深入iPhone开发的具体过程中,下次课见 :-)

    展开全文
  • 现在的智能手机越来越风行了,其中尤以Apple的iPhone和Google的Android系统最为流行,这里我将向大家介绍iPhone开发的基础知识。为了便于初学者尽快上手,我尽量以代码加截图的方式加以说明。要想进行iPhone开发,...

    现在的智能手机越来越风行了,其中尤以Apple的iPhone和Google的Android系统最为流行,这里我将向大家介绍iPhone开发的基础知识。为了便于初学者尽快上手,我尽量以代码加截图的方式加以说明。

    要想进行iPhone开发,Mac和iPhone是必不可少的,虽然有人通过一些手段也能在pc上装上Mac,使用上“黑苹果”,但毕竟不是正统,经常会出现这样那样的问题,比如无线不行,声卡不行之类的问题,因此Mac最好还是要有的;至于iPhone,虽然可以通过模拟器在电脑上查看程序的运行效果,但有些功能只能在真机上运行,因此iPhone也是必备条件。我使用的是MacBook Pro 990以及iPhone一代,现在大家应该普遍都用iPhone 3G或3GS了吧。

    好,闲言少续,任何程序开发的第一课都是从经典的hello world开始的,我也不能免俗,本节课将在iPhone上打印出Hello World字符串。过程如下:

    1,首先需要下载iPhone SDK,地址是 http://developer.apple.com/,如下图所示:

     

    2, iPhone SDK中包含了Apple提供的开发工具:Xcode,Interface Builder以及Instrument等等,完全免费,在成功注册并激活账号后就可以下载了,该SDK容量非常大,大概有2.9G左右,因此需要下载很长时间。

    3,下载完毕后就可以安装了,安装过程非常简单,直接双击下载后的dmg文件即可安装,安装过程大概需要10分钟左右。

    4,安装完毕后在Developer/Application目录中找到Xcode.app双击运行,这就是Apple为我们提供的开发工具,可以进行Mac与iPhone开发,不妨把它放到Dock上。

    5,启动Xcode后新建一个iPhone OS项目,命名为HelloWorld,方式为选择左边的iPhone OS下面的Application后再选择右边的View-based Application,如下图所示,之后单击Choose按钮,这时Xcode提示你输入项目名称,直接输入HelloWorld即可:

     

    6,在新建的项目中不作任何事情,直接单击Build and Run按钮编译并运行程序,程序运行结果如下图所示:

     

    7,可以看到程序能够顺利运行并显示出iPhone模拟器,里面是一个空的界面,毕竟我们还什么没有写呢。

    8,现在准备在界面上显示Hello World字符串,需要编写一些代码了,iPhone和Mac开发主要使用Objective-C语言,这是C语言的超集,对于熟悉C++和Java的读者应能很快上手,只是Objective-C的使用语法有些不同,花些时间适应一下即可。

    9,打开HelloWorldViewController.m文件,在其中的viewDidLoad函数中编写如下代码(注意:该函数默认是被注释掉的,需要先取消注释再编写代码),完整的函数实现如下图所示:

     

    10,再次单击Build and Run按钮运行程序,模拟器显示的结果如下图所示,成功显示出了Hello World字符串!

     

    本节我并没有介绍iPhone开发所涉及的细节,只是通过一个简单的实例介绍了iPhone开发的流程,目的是帮助大家尽快上手,培养自信,后面我们将深入iPhone开发的具体过程中,下次课见 :-)


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ricohzhanglong/archive/2010/03/18/5391112.aspx

    展开全文
  • iPhone开发入门教程

    2010-09-07 09:33:50
    现在的智能手机越来越风行了,其中尤以Apple的iPhone和Google的Android系统最为流行,这里我将向大家介绍iPhone开发的基础知识。为了便于初学者尽快上手,我尽量以代码加截图的方式加以说明。 要想进行iPhone开发,...
  • 这是一个VS2010的代码,从本机的摄像头和声卡获取音视频信息,用rtmp协议,发送到直播服务器上。 支持将视频和音频内容流传输到WOWZA媒体服务器、Adobe媒体服务器。然后您可以同时向Adobe Flash播放器、苹果iOS设备...
  • 1.1.3 手机中的驱动程序 2 1.2 开源还是不开源的问题 3 1.2.1 雾里看花的开源 3 1.2.2 从为什么选择java谈为什么不开源驱动程序 3 1.2.3 对驱动开发者来说是一把双刃剑 4 1.3 Android和Linux ...
  • 1.1.3 手机中的驱动程序 2 1.2 开源还是不开源的问题 3 1.2.1 雾里看花的开源 3 1.2.2 从为什么选择java谈为什么不开源驱动程序 3 1.2.3 对驱动开发者来说是一把双刃剑 4 1.3 Android和Linux ...
  • 1.1.3 手机中的驱动程序 2 1.2 开源还是不开源的问题 3 1.2.1 雾里看花的开源 3 1.2.2 从为什么选择java谈为什么不开源驱动程序 3 1.2.3 对驱动开发者来说是一把双刃剑 4 1.3 Android和Linux ...
  • 2. 基本外围设备的配置(LCD、触摸屏、网卡、声卡,SD卡、USB设备、摄像头) 3. 向内核中加入驱动模块(LED、按键、蜂鸣器、AD、DS18B20) 第七部分 嵌入式系统移植之构建根文件系统 第十七讲 用busybox制作根文件...
  • 支持报警短信转发,支持多个接收手机号码,可设定发送间隔,比如即时发送或者6个小时发送一次所有的报警信息,短信内容过长,自动拆分多条短信。 支持报警邮件转发,支持多个接收邮箱,可设定发送间隔,比如即时发送...
  • 基于LabVIEW的声卡虚拟仪器性能测试与实验.pdf 基于LabVIEW的多任务测控系统及数据库的应用研究.pdf 基于LabVIEW的多通道数据采集系统的研究.pdf 基于LabVIEW的实时控制与仿真技术应用研究.pdf 基于LabVIEW的数据库...
  • 基于LabVIEW的声卡虚拟仪器性能测试与实验.pdf 基于LabVIEW的多任务测控系统及数据库的应用研究.pdf 基于LabVIEW的多通道数据采集系统的研究.pdf 基于LabVIEW的实时控制与仿真技术应用研究.pdf 基于LabVIEW的数据库...
  • 基于LabVIEW的声卡虚拟仪器性能测试与实验.pdf 基于LabVIEW的多任务测控系统及数据库的应用研究.pdf 基于LabVIEW的多通道数据采集系统的研究.pdf 基于LabVIEW的实时控制与仿真技术应用研究.pdf 基于LabVIEW的数据库...
  • 基于LabVIEW的声卡虚拟仪器性能测试与实验.pdf 基于LabVIEW的多任务测控系统及数据库的应用研究.pdf 基于LabVIEW的多通道数据采集系统的研究.pdf 基于LabVIEW的实时控制与仿真技术应用研究.pdf 基于LabVIEW的数据库...
  • 实例073 使用正则表达式验证手机号 89 实例074 使用正则表达式验证身份证号 90 实例075 使用正则表达式验证两位小数 91 实例076 使用正则表达式验证一年的12个月份 92 实例077 使用正则表达式验证一个月的31天 93 ...
  •  实例073 使用正则表达式验证手机号 89  实例074 使用正则表达式验证身份证号 90  实例075 使用正则表达式验证两位小数 91  实例076 使用正则表达式验证一年的12个月份 92  实例077 使用正则表达式验证一个...
  • 3、首次支持手机驱动及官方应用程序,支持包括:诺基亚、摩托罗拉、索爱、黑莓、Iphone、HTC(部分型号)、夏普(部分型号),其他品牌和型号逐步增加中。 4、在网络不畅的情况下,增加驱动列表重新获取功能。 ====...
  • 实例073 使用正则表达式验证手机号 实例074 使用正则表达式验证身份证号 实例075 使用正则表达式验证两位小数 实例076 使用正则表达式验证一年的12个月份 实例077 使用正则表达式验证一个月的31天 实例078 ...
  • 实例073 使用正则表达式验证手机号 实例074 使用正则表达式验证身份证号 实例075 使用正则表达式验证两位小数 实例076 使用正则表达式验证一年的12个月份 实例077 使用正则表达式验证一个月的31天 实例078 ...
  • 实例073 使用正则表达式验证手机号 实例074 使用正则表达式验证身份证号 实例075 使用正则表达式验证两位小数 实例076 使用正则表达式验证一年的12个月份 实例077 使用正则表达式验证一个月的31天 实例078 ...
  • 文件格式为azw3,文字版本,可以用kindle阅读,PC端可以用calibre,可以转成epub所有手机阅读软件都支持,对手机的排版支持还不错. 内容目录 第1天 文本操作指令 1.1 ar 指令:创建、修改或从档案文件中提取文件 1.2 ...
  • 程序开发范例宝典>>

    2012-10-24 10:41:28
    光盘提供了书中所有实例的源代码,全部源代码都经过精心调试,在Windows XP/Windows 2000/Windows Server 2003等操作系统下测试通过,均能够正常运行。  本书适合程序开发人员,也可供大中专院校师生阅读。 目 ...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
热门标签
关键字:

手机声卡代码