国产性一乱一性一伧的解决方法,国产一区影视,日韩欧美国产亚洲,日韩av在线播放不卡,国产69精品久久久久孕妇大杂乱 ,亚洲国产一,97国产精品视频,波多野结无码高清中文
君億道科技聯系電話:0755-26830682

公司新聞

最全面及時的公司資訊、企業動態

USB-CTR0408 的 Linux C 占空比示例

來源君億道

這是適用于 Linux的產品特定USB-CTR04和USB-CTR08 C 示例。它將通道 0 配置為脈沖寬度模式,將通道 1 配置為周期模式。因為占空比測量是脈沖寬度除以周期,所以占空比與脈沖寬度和周期一起顯示。本文底部附有C代碼文件。

 

/*

    UL 調用演示:               ulCInConfigScan()

 

    目的: 執行連續掃描

                                      指定頻道

 

    演示:脈寬和周期模式

 

 

    腳步:

    1.調用ulGetDaqDeviceInventory()獲取可用DAQ設備列表

    2.調用ulCreateDaqDevice()獲取第一個DAQ設備的句柄

    3.調用ulConnectDaqDevice()建立與DAQ設備的UL連接

    4. 調用 ulCConfigScan() 配置通道

    5.調用ulCInScan()開始通道掃描

    6.調用ulCInScanStatus()查看后臺運行狀態

    7. 顯示每個通道的數據

    8.調用ulCInScanStop()停止后臺操作

    9. 退出進程前調用ulDisconnectDaqDevice()ulReleaseDaqDevice()

*/

 

#include <stdio.h>

#include <stdlib.h>

#include "uldaq.h"

#include "utility.h"

 

#define MAX_DEV_COUNT 100

#define MAX_SCAN_OPTIONS_LENGTH 256

#define ActualTickSize 0.00000002083

int main(void)

{

       int descriptorIndex = -1;

       DaqDeviceDescriptor devDescriptors[MAX_DEV_COUNT];

       DaqDeviceInterface interfaceType = USB_IFC;

       daqDeviceHandle daqDeviceHandle = 0;

       無符號整數 numDevs = MAX_DEV_COUNT;

 

       // 設置一些用于獲取數據的變量

       int FirstChannel = 0;

       int LastChannel = 1;

       int ChannelCount = 2;

 

       const int samplesPerCounter = 100;

       雙采樣率 = 100;

       整數索引 = 0;

 

       unsigned long long* 緩沖區 = NULL;

       UlError err = ERR_NO_ERROR;

 

       int i = 0;

       int __attribute__((未使用)) ret;

       字符 c;

 

       // 獲取所有可用 DAQ 設備的描述符

       err = ulGetDaqDeviceInventory(interfaceType, devDescriptors, &numDevs);

 

       如果(錯誤!= ERR_NO_ERROR

              到最后;

 

       // 驗證至少檢測到一個 DAQ 設備

       如果 (numDevs == 0)

       {

              printf("未檢測到數據采集設備\n");

              到最后;

       }

 

       printf("找到 %d 個數據采集設備\n", numDevs);

       for (i = 0; i < (int) numDevs; i++)

       {

              printf(" [%d] %s: (%s)\n", i, devDescriptors[i].productName, devDescriptors[i].uniqueId);

              // USB-CTR04 id = 0x12EUSB-CTR08 id = 0x127

              if((devDescriptors[i].productId == 0x12E) || (devDescriptors[i].productId == 0x127))

              {

            描述符索引 = i;

            daqDeviceHandle = ulCreateDaqDevice(devDescriptors[descriptorIndex]);

            休息;

        }

    }

    如果(描述符索引 == -1

    {

        printf("\n錯誤:未找到USB-CTR04USB-CTR08 \n");

        返回0

    }

 

       printf("句柄 = %d\n", daqDeviceHandle);

       printf("\n正在連接設備 %s - 請稍候...\n", devDescriptors[descriptorIndex].devString);

 

       // 創建到設備的連接

       錯誤 = ulConnectDaqDevice(daqDeviceHandle);

 

       如果(錯誤!= ERR_NO_ERROR

              到最后;

 

 

       // 為脈寬模式配置通道

       錯誤 = ulCConfigScan(daqDeviceHandle,

                    0,

                    CMT_PULSE_WIDTH,

                    CMM_DEFAULT,

                    CED_RISING_EDGE

                    CTS_TICK_20PT83ns

                    CDM_NONE,

                    CDT_DEBOUNCE_500ns

                    CF_DEFAULT);

    如果(錯誤!= ERR_NO_ERROR

              到最后;

    // 為周期模式配置通道

      錯誤 = ulCConfigScan(daqDeviceHandle,

                    1

                    CMT_PERIOD,

                    CMM_DEFAULT,

                    CED_RISING_EDGE

                    CTS_TICK_20PT83ns

                    CDM_TRIGGER_AFTER_STABLE

                    CDT_DEBOUNCE_500ns

                    CF_DEFAULT);

    如果(錯誤!= ERR_NO_ERROR

    {

              到最后;

    }

 

       // 分配一個緩沖區來接收數據

       buffer = (unsigned long long*) malloc(ChannelCount * samplesPerCounter * sizeof(unsigned long long));

 

       如果(緩沖區== NULL

       {

              printf("\n內存不足,無法創建掃描緩沖區\n");

              到最后;

       }

 

 

 

       printf("\n%s 就緒\n", devDescriptors[descriptorIndex].devString);

       printf("函數演示:ulCConfigScan()\n");

       printf(" 計數器:%d - %d\n", FirstChannel, LastChannel);

       printf(" 每個通道的樣本數:%d\n", samplesPerCounter);

       printf(" 率:%f\n", 采樣率);

       printf("\n按回車鍵繼續\n");

 

       ret = scanf("%c", &c);

 

       ret = system("清除");

 

       雙頻 = 1000;

       雙重職責 = 0.2;

       雙延遲 = 0.0;

 

       //定時器輸出用作測試信號,將TMR0連接到兩個計數器輸入

    err = ulTmrPulseOutStart(daqDeviceHandle, 0, &freq, &duty, 0, &delay, TMRIS_LOW, PO_DEFAULT);

 

       // 開始獲取

       錯誤 = ulCInScan(daqDeviceHandle,

                    第一頻道,

                    最后一個頻道,

                    每個計數器的樣本,

                    &采樣率,

                    SO_DEFAULTIO | SO_CONTINUOUS

                    CINSCAN_FF_CTR32_BIT ,

                    緩沖);

 

       如果(錯誤 == ERR_NO_ERROR

       {

              ScanStatus 狀態;

              TransferStatus transferStatus;

              int i = 0;

 

              // 獲取獲取的初始狀態

              ulCInScanStatus(daqDeviceHandle, &status, &transferStatus);

 

              while(狀態 == SS_RUNNING && err == ERR_NO_ERROR && !enter_press())

              {

                     // 獲取當前的獲取狀態

                     錯誤 = ulCInScanStatus(daqDeviceHandle, &status, &transferStatus);

 

                     如果(錯誤 == ERR_NO_ERROR

                     {

                            // 將光標重置到顯示的頂部并

                            // 顯示終止消息

                            重置光標();

                            printf("按回車鍵終止進程\n\n");

                            printf("活動數據采集設備:%s (%s)\n\n", devDescriptors[descriptorIndex].productName, devDescriptors[descriptorIndex].uniqueId);

                            printf("實際掃描率 = %f\n\n", SampleRate);

 

                            索引 = transferStatus.currentIndex;

                            printf("currentScanCount = %-10llu \n", transferStatus.currentScanCount);

                            printf("currentTotalCount = %-10llu \n", transferStatus.currentTotalCount);

                            printf("currentIndex = %-10d \n\n", index);

 

                            如果(指數 >= 0

                            {

                                   // 顯示數據

                    浮動脈沖寬度 = (float)((buffer[index] * ActualTickSize) * 1000);

                    浮動周期 = (float)((buffer[index +1] * ActualTickSize) * 1000);

                    清除EOL();

                    //脈寬

                    printf("chan %d \t= %2.3f mS\n",0,      脈寬);

                    //周期通道

                    printf("chan %d \t= %2.3f mS\n",1, period );

                    printf("占空比 \t= %2.3f %\n", (脈沖寬度/周期) * 100);

 

                                   usleep(100000);

                            }

                     }

              }

 

              // 如果它仍在運行,則停止獲取

              如果(狀態 == SS_RUNNING && err == ERR_NO_ERROR

              {

                     錯誤 = ulCInScanStop(daqDeviceHandle);

              }

 

       }

 

       // 斷開與 DAQ 設備的連接

       ulDisconnectDaqDevice(daqDeviceHandle);

 

結尾:

 

       // 釋放數據采集設備的句柄

       ulReleaseDaqDevice(daqDeviceHandle);

 

       // 釋放掃描緩沖區

    自由(緩沖);

 

       如果(錯誤!= ERR_NO_ERROR

       {

              字符 errMsg[ERR_MSG_LEN];

              ulGetErrMsg(err, errMsg);

              printf("錯誤代碼:%d \n", err);

              printf("錯誤信息:%s \n", errMsg);

       }

 

       返回0

}


主營:電流探頭,電壓探頭,羅氏線圈,電流傳感器,高壓探頭,電流互感器,功率電子測量產品
粵ICP備14003389號深圳君億道科技有限公司 © http://www.fengshengzhitongche.com
主站蜘蛛池模板: 遂川县| 纳雍县| 彩票| 上犹县| 内丘县| 清丰县| 兴安县| 大渡口区| 文成县| 河北区| 灯塔市| 海晏县| 钦州市| 云林县| 焦作市| 兴宁市| 乌苏市| 汾西县| 澄江县| 枣阳市| 达孜县| 喜德县| 荆门市| 呼和浩特市| 黄骅市| 宜章县| 广德县| 临夏县| 亚东县| 乐陵市| 都昌县| 白山市| 老河口市| 莫力| 晋江市| 山西省| 博白县| 昆山市| 博客| 乌拉特前旗| 辉南县| 包头市| 朝阳市| 夹江县| 景宁| 泽库县| 兴文县| 桑日县| 迁西县| 兴安盟| 塔河县| 灵石县| 开阳县| 湘阴县| 克什克腾旗| 大兴区| 寻乌县| 武威市| 商河县| 平乐县| 镶黄旗| 武陟县| 贺州市| 鹤峰县| 晋城| 油尖旺区| 广宗县| 阜康市| 双柏县| 舞阳县| 同江市| 巧家县| 广东省| 临沂市| 紫金县| 通道| 柳河县| 新龙县| 甘南县| 泰顺县| 彭泽县| 昌图县|