python数据采集提前结束进程

python数据采集相关求帮助(python3.9)

利用数据手套进行数据采集,但在运行程序过程中未报错提前结束了进程,按b采集并继续连续采集大概只执行了两次,第三次还没完成就直接结束了。手套是wiseglove.
结束后进程已结束,退出代码-1073741819 (0xC0000005)

import ctypes
import time
import pandas
import gc
from math import floor

lib = ctypes.CDLL("./WISEGLOVEU3D.dll")
# 数据类型
g_pGlove = ctypes.c_bool
finger_sensor = (ctypes.c_ushort * 19)()
finger_angle = (ctypes.c_float * 19)()
arm_sensor = (ctypes.c_float * 12)()
timestamp = ctypes.c_uint


# 手套传感器检测
def GetSensorSum():
    num_sensor = lib.wgGetNumOfSensor()  # 手指传感器个数
    num_arm = lib.wgGetNumOfArm()  # 手臂传感器个数
    try:
        print('当前手套拥有:手指传感器{0}个,手臂传感器{1}个'.format(num_sensor, num_arm))
    except ValueError:
        print('错误,请检查')


# 手套标定
def GloveStandardization():
    lib.wgResetQuat()
    lib.wgResetCalib()


# 一次手势采集数据
def GestureCollect():
    global timestamp
    once_data = []
    # 时间戳
    timestamp = lib.wgGetData(finger_sensor)
    once_data.append(timestamp)
    # 手指传感器值
    for i in range(19):
        once_data.append(finger_sensor[i])
    # 手指传感器角度值
    lib.wgGetAngle(finger_angle)
    for i in range(19):
        once_data.append(finger_angle[i])
    # 手臂传感器角度值
    lib.wgGetQuat(arm_sensor)
    for i in range(12):
        once_data.append(arm_sensor[i])
    try:
        return once_data
    except:
        print('错误')
        return None


# 采集初始化
def initialize():
    GloveStandardization()
    number = 1
    get_data = []
    while number < 10:
        data = GestureCollect()
        time.sleep(0.001)  # 每1秒读取一次
        get_data.append(data)
        number = number + 1
    name = 'begin'
    data_to_excel = pandas.DataFrame(get_data)
    data_to_excel.to_csv('D:/Python/p/data/%s.csv' % name, encoding="utf-8-sig")


# 1秒手势采集数据
def OneGesture():
    data_total = []
    collect_number = 1
    end_time = time.monotonic() + 1
    while time.monotonic() < end_time:
        gesture_data = GestureCollect()
        print('第{}次'.format(collect_number))
        print(gesture_data)
        collect_number = collect_number + 1
        data_total.append(gesture_data)
    return data_total


# 数据保存
def DataSave(data):
    data_title = ['timestamp']
    for i in range(19):
        data_title.append('Sensor#{}'.format(i))
    for i in range(19):
        data_title.append('Angle#{}'.format(i))
    for i in range(12):
        data_title.append('Arm#{}'.format(i))
    data_total = data
    data_total_excel = pandas.DataFrame(data=data_total, columns=data_title)
    gesture_name = input('请输入当前手势名称:')
    data_total_excel.insert(loc=1, column='gesture', value=floor(float(gesture_name)))
    print(data_total_excel)
    data_total_excel.to_csv('D:/Python/p/data/{}.csv'.format(gesture_name))


# 主程序
print('手套初始化检测手套时间较久,请等待。。。。。。')
g_pGlove = lib.wgInit()
while True:
    if not g_pGlove:
        print('数据手套连接失败!')
        g_pGlove = lib.wgInit()
    else:
        print('数据手套已成功连接!')
        break
initialize()
GetSensorSum()
standardization = input('使用前请按 "s" 进行手套标定,请保持手指张开,手臂自然下垂')
if standardization in ('s', 'S'):
    GloveStandardization()
else:
    print('未进行标定')
begin = input('按 "b" 开始记录传感器数据,按 “q” 退出程序 ')
begin = input('按 "b" 开始记录传感器数据,按 “q” 退出程序 ')
while True:
    if begin in ('b', 'B'):
        save_data = []
        print('开始记录传感器数据,请保持手势1秒钟')
        save_data = OneGesture()
        saving = input('是否保存数据?“y"')
        if saving == 'y':
            DataSave(save_data)
            print('文件已保存')
        else:
            print('不保存数据')
            begin = 'q'
        m = input('是否继续记录?y')
        if m in ('Y', 'y'):
            begin = 'b'
    elif begin in ('q', 'Q'):
        break
    else:
        print('按键错误,未进行记录数据,请重新输入:')
        begin = input('b记录 or q退出')
gc.collect()  # 强制进行垃圾回收
lib.wgClose()  # 断开手套接口

调试的时候是哪里弄错了?按理说应该要OneGesture()保持循环直到一秒钟的,但他运行一次后就结束了

img

运行结果截图看下呢,看下是在哪一步结束的

这是致命错误,如安装了WPS、金山词霸之类金山产品,卸载试试(卸载后重启)