校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 總結Python連接CS2000的詳細步驟

總結Python連接CS2000的詳細步驟

熱門標簽:地圖標注視頻廣告 百度地圖標注位置怎么修改 老人電話機器人 高德地圖標注是免費的嗎 梅州外呼業務系統 無錫客服外呼系統一般多少錢 大連crm外呼系統 北京電信外呼系統靠譜嗎 洪澤縣地圖標注

前言

記錄CS2000設備使用串口連接以及相關控制。

CS2000是一臺分光輻射亮度計,也就是可以測量光源的亮度。詳細的規格網址參考CS2000/CS-2000A ,所有信息以柯尼卡美能達官網的參數以及使用手冊為主。

使用目的及環境

當前的使用目的是使用PC端控制CS2000,測量屏幕的亮度數據。

PC端使用Python,在Win10環境下開發;

需要額外安裝的模塊:pySerial;

設備連接方法

這臺設備是支持USB1.1 Full-Speed和RS-232C的。其配套的軟件CS-S10是使用的USB1.1接口,如果安裝了軟件,也就相當于安裝了對應驅動。當然,我這里則是使用了配置串行通訊端口COM Port(Cluster Communication Port)。

CS2000支持的通訊設定如下:

這里選用波特率115200,數據長度8 bits, 無校驗,1 bit停止位的設定;至于Hardware(RTS/CTS),即Require To Send和Clear To Send信號,這里先不做考慮。

程序主體流程

1.獲取電腦COM列表;

2.連接并打開CS2000的設備端口;

3.設備初始化(設定控制模式,關閉測試按鍵操作,設定同步模式等);

4.單次測量并獲取測量值;

5.關閉串口;

接下來就開始結合手冊進行操作。

獲取端口

需要引入serial.tools.list_ports模塊:

def port_list():
    """
    獲取電腦端口列表
    :return: 端口列表
    """
    pl = serial.tools.list_ports.comports()
    # print(pl)
    print("Port List:")
    for item in pl:
        print("{}\t\t:\t{}".format(item.usb_description(), item.manufacturer))

獲取端口列表后,可以打印端口的描述和制造商,用于區分多個端口。

連接端口

需要引入serial模塊:

def connect_com(port, baudrate=115200, timeout=0):
    """
    配置串口參數并進行連接;
    :param port: 端口號,“COM1”
    :param baudrate: 波特率,115200
    :param timeout: 超時時間,0
    :return: 連接好的串口,ser
    """
    # noinspection PyBroadException
    try:
        ser = serial.Serial(port, baudrate, timeout=timeout)
        print("Port\t\t:\t{}".format(ser.name))
        print("Baudrate\t:\t{}".format(ser.baudrate))
        print("Status\t\t:\t{} Connect Successful!".format(port))
        return ser
    except Exception:
        print("Status\t\t:\t\t\tConnect COM Failed!")

定義的函數,返回打開串口之后的對象。

發送格式

分隔符

使用PC發送命令到測量設備的時候,需要使用如下分隔符:

CR, LF對應的ASCII的0x0D0x0A;也就是在命令結束后要加分隔符進行分割;

數據字符格式

發送的數據中,數字發送,必須要跟數字的字符一樣。比如發送十進制數據886,就需要發送對應的字符886。如果需要輸入的字符長度少,需要用空格補齊。

超時

PC通信的超時設定至少要10s。這里可以理解為設備測量亮度是需要積分時間的,比如說測試比較暗的畫面,需要長時間的積分,因此測量的返回數據需要對應延遲很長時間,因此超時設定為至少10s。

實際使用的情況中,比較暗的畫面可能需要超過7s的測量時間。

初始化

初始化包含以下以幾個環節,包括設置遠端模式(SCMS),關閉測量按鍵(MSWE),設定同步模式(SCMS)等;這里仔細參考手冊,很容易就能理解,下面就直接貼出代碼。

def remote_mode(ser):
    """
    對cs2000進行遠程控制設置
    :param ser: cs2000的串口
    :return: None
    """
    data = b'RMTS,1\n'
    tx_data(ser, data)
    if rx_data(ser)[0] == "OK00":
        print("Status\t\t:\tRemote Mode Setting OK!")
    else:
        print("Status\t\t:\tRemote Mode Setting ERROR!")


def meas_key_off(ser):
    """
    關閉cs2000設備上的measure按鍵控制
    :param ser: cs2000的串口
    :return: None
    """
    data = b'MSWE,0\n'
    tx_data(ser, data)
    if rx_data(ser)[0] == "OK00":
        # print("Status\t\t:\tMeasure Key Disable OK!")
        pass
    else:
        print("Status\t\t:\tMeasure Key Disable ERROR!")


def sync_mode_set(ser, freq):
    """
    同步模式設定
    :param ser: cs2000的串口
    :param freq: 頻率,單位Hz
    :return: None
    """
    mode = b'1,'
    freq = freq.encode()
    data = b'SCMS,' + mode + freq + b'00\n'
    tx_data(ser, data)
    if rx_data(ser)[0] == "OK00":
        print("Status\t\t:\tSync Mode is {}, freq is {}Hz!".format(mode, freq))
        pass
    else:
        print("Status\t\t:\tMeasure Key Disable ERROR!")


def sync_mode_read(ser):
    """
    同步模式讀取
    :param ser: cs2000的串口
    :return: None
    """
    sync_mode_dict = {"0": "No sync",
                      "1": "Internal sync",
                      "2": "External sync"}
    data = b'SCMR\n'
    tx_data(ser, data)
    rdata = rx_data(ser)
    if rdata[0] == "OK00":
        print("Status\t\t:\tSync Mode is {}. ".format(sync_mode_dict[rdata[1]]))
        if rdata[1] == "1":
            print("Status\t\t:\tSync frequency is {}Hz. ".format(rdata[2][:-2]))
        pass
    else:
        print("Status\t\t:\tSync Mode read ERROR!")


def dev_init(ser):
    """
    cs2000設備進行初始化,包含設置為遠程控制,關閉測量按鍵,設置同步模式,查詢同步模式數據
    :param ser: cs2000的串口
    :return: None
    """
    remote_mode(ser)
    meas_key_off(ser)
    sync_mode_set(ser, SYNC_FREQ)
    sync_mode_read(ser)

注意:這里每次發送命令之后,設備均會返回數據。如若返回的是OK00,則說明命令發送和接收都沒有出現問題,如果返回的指令有ERxx等字樣,需要根據手冊中的錯誤代碼列表查詢錯誤原因,并進行改正。

測量數據

測量數據需要先發送測量指令,等待返回測量時間,等待測量結束;

再發送測量數據讀取指令。

def measure(ser):
    """
    向cs2000發出測量的命令
    :param ser: cs2000的串口
    :return: None
    """
    data = b'MEAS,1\n'
    tx_data(ser, data)
    rdata = rx_data(ser)
    if rdata[0] == "OK00":
        # print("Status\t\t:\tMeasure time is {}s".format(rdata[1]))
        pass
    else:
        print("Status\t\t:\tMeasure CMD ERROR Code {}".format(rdata[0]))

    rdata_1 = rx_data(ser)
    if rdata_1[0] == "OK00":
        # print("Status\t\t:\tMeasurement completed!")
        pass
    else:
        print("Status\t\t:\tMeasure Wait ERROR Code {}".format(rdata_1[0]))


def lv_read(ser):
    """
    向cs2000發出測量的命令
    :param ser: cs2000的串口
    :return: 亮度值lv
    """
    data = b'MEDR,2,0,101\n'
    tx_data(ser, data)
    rdata = rx_data(ser)
    if rdata[0] == "OK00":
        # print("Status\t\t:\tLuminance is {} cd/m²".format(rdata[1]))
        return rdata[1]
    else:
        print("Status\t\t:\tLuminance Read ERROR Code {}".format(rdata[0]))
        return None


def get_lv(ser):
    """
    獲取亮度值
    :param ser: cs2000的串口
    :return: 亮度值,單位cd/m²
    """
    measure(ser)
    return lv_read(ser)


def xylv_read(ser):
    """
    向cs2000發出測量的命令
    :param ser: cs2000的串口
    :return: 色坐標,X,Y,亮度,LV
    """
    data = b'MEDR,2,0,2\n'
    tx_data(ser, data)
    rdata = rx_data(ser)
    if rdata[0] == "OK00":
        print("Status\t\t:\tX,Y,LV are {} {} {}".format(rdata[1], rdata[2], rdata[3]))
        return rdata[1:]
    else:
        print("Status\t\t:\tMeasure ERROR!")
        return None


def get_xylv(ser):
    """
    獲取色坐標X,Y和亮度LV。
    :param ser: cs2000的串口
    :return: 色坐標,X,Y,亮度,LV
    """
    measure(ser)
    return xylv_read(ser)

其中,返回數據的格式需要根據發送的指令進行解析,對應在Datasheet中也有介紹。

串口收發數據的函數

對于串口收發數據,也封裝了一層函數,方便調用:

def tx_data(ser, data):
    # noinspection PyBroadException
    try:
        ser.write(data)
        # print("Status\t\t:\tSend OK!")
    except Exception:
        print("Status\t\t:\tSend ERROR!")


def rx_data(ser):
    # noinspection PyBroadException
    try:
        rdata = ser.readline().decode("utf-8").replace("\n", "").split(",")
        # print("Status\t\t:\tReceived {}".format(rdata))
        return rdata
    except Exception:
        print("Status\t\t:\tReceive ERROR!")

串口關閉

串口使用之后一定要進行合理的關閉,防止多個程序運行,出現連接問題。

def serial_close(ser):
    """
    關閉串口連接
    :return: None
    """
    # noinspection PyBroadException
    try:
        ser.close()
        print("Port {} has been closed!".format(ser.name))
    except Exception:
        print("----serial_close failed!")

主函數

所有的參數傳遞,都是將產生的串口對象作為參數傳遞。

if __name__ == '__main__':

    port_list()

    cs2000 = connect_com("COM1", timeout=5)

    dev_init(cs2000)

    get_lv(cs2000)
    get_xylv(cs2000)

    serial_close(cs2000)

寫在后面

設備調試的要義在于,一切操作要參考Datasheet:cs_2000_technicalnote_en,可以在官網支持中下載到。熟悉了手冊之后,后面的調試環節可以節省很多時間,調制的過程也會非常順利。這里例舉幾個調試過程中遇到的問題:

1.合理設定超時(要根據最長的測量時間設定),在發送數據之后就可以等待接收數據;

2.這里的分隔符使用的就是\n,轉換為byte類型后進行串口發送;

3.一些模式設定可以只進行一次設定,不需要每次上電都進行設定,為保險起見,統一放在初始化里面;

4.暗光環境下測試暗光源,需要的時間會很長,手動測試版有24s之多,亮光源的測試時間在1s一次左右;

5.程序中將串口直接作為參數傳遞有些不妥,可以將該模塊改為class

后面如果遇到了其他問題也會在此更新。

本項目源碼地址:https://github.com/LJacki/CS2000

到此這篇關于總結Python連接CS2000的詳細步驟的文章就介紹到這了,更多相關python連接CS2000內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python連接HDFS實現文件上傳下載及Pandas轉換文本文件到CSV操作
  • Python3操作讀寫CSV文件使用包過程解析
  • python給指定csv表格中的聯系人群發郵件(帶附件的郵件)
  • Python csv文件的讀寫操作實例詳解

標簽:安慶 長春 清遠 怒江 吉林 洛陽 岳陽 泉州

巨人網絡通訊聲明:本文標題《總結Python連接CS2000的詳細步驟》,本文關鍵詞  總結,Python,連接,CS2000,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《總結Python連接CS2000的詳細步驟》相關的同類信息!
  • 本頁收集關于總結Python連接CS2000的詳細步驟的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲黄色性网站| 久久综合九色综合欧美就去吻| 国产精品成人免费| 91免费看`日韩一区二区| 亚洲欧美二区三区| 欧美日韩的一区二区| 另类小说综合欧美亚洲| 国产亚洲精品aa| 色综合久久99| 日韩高清不卡一区二区三区| 日韩欧美不卡在线观看视频| 国产91高潮流白浆在线麻豆| 亚洲欧洲日本在线| 51精品久久久久久久蜜臀| 蜜臀a∨国产成人精品| 国产日韩精品一区二区三区在线| 91色在线porny| 日韩av在线播放中文字幕| 精品国产一区二区三区四区四 | 欧美视频一区在线| 日本aⅴ精品一区二区三区| 久久久精品欧美丰满| 色偷偷一区二区三区| 日本免费新一区视频| 久久午夜羞羞影院免费观看| 色婷婷综合中文久久一本| 亚洲18女电影在线观看| 精品粉嫩超白一线天av| 色偷偷久久一区二区三区| 九九久久精品视频| 一区二区三区在线视频观看 | 亚洲va欧美va国产va天堂影院| 精品国产欧美一区二区| 在线视频国内一区二区| 国产一区二区三区观看| 亚洲一区二区三区四区五区黄 | 亚洲欧美在线高清| 日韩免费高清视频| 在线免费观看不卡av| 国产乱子轮精品视频| 丝袜美腿亚洲综合| 中文字幕一区二区不卡| 精品国产1区2区3区| 欧美日韩另类一区| 一本色道久久综合精品竹菊| 国产酒店精品激情| 美女视频黄频大全不卡视频在线播放| 亚洲美女屁股眼交| 国产精品三级视频| 337p日本欧洲亚洲大胆精品| 在线播放欧美女士性生活| 色综合咪咪久久| 成人精品免费视频| 国产精品白丝jk白祙喷水网站| 蜜臀精品久久久久久蜜臀| 亚洲国产成人av好男人在线观看| 国产精品国产馆在线真实露脸 | 国产精品入口麻豆九色| 精品国产乱子伦一区| 337p亚洲精品色噜噜| 欧美性受极品xxxx喷水| 99久久99久久免费精品蜜臀| 国产suv精品一区二区6| 国产精品影视在线观看| 国内不卡的二区三区中文字幕| 日本不卡在线视频| 午夜精品一区二区三区电影天堂| 一区二区国产盗摄色噜噜| 国产精品麻豆一区二区| 亚洲国产高清在线观看视频| 国产亚洲综合在线| 久久久久久久久99精品| 欧美精品一区男女天堂| www欧美成人18+| 国产亚洲午夜高清国产拍精品| 精品人在线二区三区| 日韩免费观看高清完整版在线观看| 欧美日韩国产成人在线免费| 在线观看亚洲一区| 欧美日韩一级黄| 欧美老人xxxx18| 日韩视频在线一区二区| 欧美本精品男人aⅴ天堂| 久久综合久久鬼色| 中文字幕的久久| 亚洲理论在线观看| 亚洲综合偷拍欧美一区色| 亚洲第一搞黄网站| 秋霞影院一区二区| 国产一区二区视频在线| 成人午夜在线免费| 91视频.com| 69精品人人人人| 精品国产麻豆免费人成网站| 国产日韩欧美高清在线| 亚洲精品日日夜夜| 婷婷国产在线综合| 久久丁香综合五月国产三级网站| 国产乱理伦片在线观看夜一区| 成人小视频免费在线观看| 色88888久久久久久影院按摩 | 日韩av网站在线观看| 国模一区二区三区白浆| 91网页版在线| 欧美精品第一页| 日韩欧美电影在线| 自拍偷拍欧美精品| 视频一区视频二区中文字幕| 国产一区二区免费在线| 91网上在线视频| 欧美成人video| 国产精品午夜电影| 舔着乳尖日韩一区| 成人黄色小视频在线观看| 欧美日韩一区三区| 中文字幕欧美三区| 午夜欧美在线一二页| 国产一区二区中文字幕| 欧美性猛交xxxx乱大交退制版| 久久午夜老司机| 亚洲aⅴ怡春院| av在线一区二区| 精品蜜桃在线看| 亚洲视频网在线直播| 激情国产一区二区| 欧美日韩综合一区| 国产日韩欧美综合一区| 日韩影视精彩在线| www.亚洲免费av| www一区二区| 三级亚洲高清视频| 91黄色免费看| 中文字幕 久热精品 视频在线| 秋霞午夜av一区二区三区| 91福利社在线观看| 欧美国产丝袜视频| 国产在线一区二区| 欧美一区二区三区视频在线观看 | 亚洲成av人片| 99在线精品一区二区三区| 精品少妇一区二区三区视频免付费| 亚洲欧美区自拍先锋| 国产精品一区二区久久精品爱涩 | 69久久99精品久久久久婷婷 | 美女在线视频一区| 欧美性大战久久久久久久| 亚洲欧洲www| 国产成人精品www牛牛影视| 日韩精品中文字幕一区 | 欧美精品一区二区蜜臀亚洲| 首页欧美精品中文字幕| 日本韩国一区二区三区| 国产精品视频你懂的| 国产成人免费在线| 欧美精品一区二区三区视频| 美女视频一区在线观看| 日韩一区二区高清| 久色婷婷小香蕉久久| 欧美精品黑人性xxxx| 视频一区视频二区中文字幕| 欧美精品粉嫩高潮一区二区| 亚洲成av人片一区二区| 欧美视频自拍偷拍| 亚洲成av人片| 在线电影欧美成精品| 天天色天天操综合| 91精品一区二区三区久久久久久| 日韩在线播放一区二区| 欧美精品精品一区| 久久成人久久鬼色| 久久久久久影视| a在线播放不卡| 亚洲在线观看免费视频| 欧洲亚洲精品在线| 日韩av二区在线播放| 日韩欧美区一区二| 国产精品456露脸| 亚洲欧美综合网| 欧美亚洲国产bt| 免费观看一级特黄欧美大片| 日韩视频一区二区在线观看| 韩国欧美国产1区| 国产精品乱码久久久久久| 99精品久久只有精品| 亚洲第一久久影院| 欧美大片一区二区三区| 国产精品性做久久久久久| 亚洲少妇最新在线视频| 在线综合+亚洲+欧美中文字幕| 日本成人在线网站| 国产清纯在线一区二区www| 色婷婷久久久久swag精品| 午夜精品久久久久久久99水蜜桃 | 色婷婷久久久亚洲一区二区三区| 亚洲第一福利视频在线| 久久这里只有精品6| 一本一道综合狠狠老| 免费欧美在线视频| 中文字幕日韩av资源站| 欧美日韩激情一区二区三区|