尋找 Nordic ble 專家

¥ 0-5000

¥ 0-5000 开源众包 Technology & Programming China
4 days ago

Description

孰悉 Nordic STM CAN bus,運用於電動自行車產業。

关注公众号,不定期副业成功案例分享
Follow WeChat

Success story sharing

Want to stay one step ahead of the latest teleworks?

Subscribe Now

Similar Teleworks

招聘岗位:程序开发与设计专才(需具备 ArcGIS REST API 概念) 我们正在寻找 3-5名 多技能的程序开发人员,参与一个具备地理信息系统(GIS)功能的外包项目。此岗位适合拥有丰富经验且高效开发能力的技术人才。 注意:若无 ArcGIS REST API 概念,请勿投递简历。 岗位要求及技能: 1. 程序开发与设计: Python开发: 精通 Python 语言,能够编写清晰且可维护的代码。 任务调度框架: 熟悉 APScheduler 或 Airflow,能够设计、开发和管理自动化任务。 HTTP请求: 熟练使用 Python 的 requests 库,能够高效发送 HTTP 请求至 ArcGIS REST Services。 网页自动化: 熟悉 Selenium,用于网页自动化和网页截图操作。 地理几何处理: 熟练使用 Shapely 处理地理几何数据。 地理空间数据: 熟悉 GeoPandas 进行地理空间数据处理。 2. 地理信息系统(GIS): ArcGIS REST API: 必须具备 ArcGIS 概念,熟悉 ArcGIS REST API 规范及其使用方法,能够按需进行地理数据查询和处理。 坐标系转换: 熟悉 pyproj,能够处理 GIS 应用中的坐标系转换问题。 3. 数据库管理: MySQL: 熟悉关系型数据库操作,能够高效完成数据访问与查询。 SQLAlchemy: 熟练使用 Python ORM 框架,有优化数据库操作的经验。 4. 监控相关(加分项): Grafana: 熟悉监控可视化平台,能够实现系统运行状态的可视化展示。 Prometheus: 熟悉监控指标收集系统,能够配置和维护监控环境。 5. 其他辅助技能(加分项): 单元测试: 熟悉 pytest,能够保障代码质量。 容器化部署: 熟悉 Docker,能够设计和优化容器化环境。 岗位优势: 我们希望找到具备上述技能的工程师,能够独立开发并与团队协作。如果您满足以上 1-5项 中任一技能要求,并拥有相关经验,欢迎加入我们,共同开发高质量的地理信息系统应用。
¥ 10000-50000 Technology & Programming 开源众包 China
4 days ago

// 2016.12
//
//** Copyright (C) WCH 2002-2016
//
Web: http://WCH.CN **
//

//** DLL for WCH MCU ISP
//
C, VC6.0 **
//****************************************
//
// WCH MCU ISP API V1.0
// 江苏沁恒股份有限公司 作者: TECH30 2016.12
// 运行环境: Windows Windows 2000 and later
// support chip: CH55X
//

#ifndef _WCH55XISP_DLL_H
#define _WCH55XISP_DLL_H

#ifdef __cplusplus
extern "C" {
#endif


#define mOFFSET( s, m ) ( (ULONG) & ( ( ( s * ) 0 ) -> m ) ) // 定义获取结构成员相对偏移地址的宏

#ifndef max
#define max( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) // 较大值
#endif

#ifndef min
#define min( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) // 较小值
#endif

#define MAX_ISPDEV_NUM 16

//MCU类型
#define MCU_CH55X 0
#define MCU_CH56X 1
#define MCU_CH54X 2
#define MCU_CH57X 3
#define MCU_CH32F1X 4
#define MCU_CH32V1X 5
#define MCU_CH58X 6
#define MCU_CH32V3X 7
#define MCU_CH32F2X 8
#define MCU_CH32V2X 9

typedef VOID ( CALLBACK * mPCH55X_USB_NOTIFY_ROUTINE ) ( // 设备事件通知回调程序
ULONG iEventStatus, // 设备事件和当前状态(在下行定义): 0=设备拔出事件, 3=设备插入事件
ULONG DevIndexArray, //插入或移除的设备序号
ULONG DevCnt); //当前设备总数

#define InforType_Succ 0
#define InforType_Err 1
#define InforType_Hit 2
typedef VOID ( CALLBACK * mOutputPrint ) ( // 应用层信息输出函数
UCHAR InforType,WCHAR *DataStr);


typedef VOID ( CALLBACK * mAppendPrint ) ( // 应用层信息追加输出函数
ULONG LineNo,WCHAR *DataStr);

typedef VOID ( CALLBACK * mPCH55X_USB_NOTIFY_ROUTINE ) ( // 设备事件通知回调程序
ULONG iEventStatus, // 设备事件和当前状态(在下行定义): 0=设备拔出事件, 3=设备插入事件
ULONG DevIndexArray, //插入或移除的设备序号
ULONG DevCnt); //当前设备总数



#pragma pack(1) //强制将下面#pragma pack(1) ...#pragma pack之间的结构定义为1字节对齐,传送scsi命令要8字节对齐(默认8字节).

typedef struct _CHIP_INFOEX {
TCHAR ChipName[16];
UINT FlashMaxSize;
UINT EepromMaxSize;
BOOL IsNetworkDownloadAvailable;
BOOL IsUsbDownloadAvailable;
BOOL IsSerialDownloadAvailable;
UCHAR DeviceType;
LIST_ENTRY listEntry;
UCHAR ChipId;
USHORT EepromStartAddr;
TCHAR Introduction[256];
TCHAR IntroductionEn[256];
}CHIP_INFOEX, *PCHIP_INFOEX;

//ISP下载设备结构信息
typedef struct _ISP55XDEVICEINFOR
{
ULONG Index; //枚举后的设备序号
UCHAR McuType; //芯片型号
BOOL IsSupportUID; //MCU是否支持获取UID,较早版本不支持UID获取
UCHAR IspVer[4]; //ISP版本
UCHAR IspMcuUID[8]; //MCU唯一ID
CHAR PortName[32]; //串口设备名,只有串口下载时才有值
BOOL DevIsOnline; //设备是否连接上该串口,只在串口下载时有用
BOOL IsCoolBoot; //是否是上电进行BOOT。如果不是,则不能修改配置位
UCHAR MacAddr[6];
BOOL IsPreBTV230;
}Isp55xDevInforS,PIsp55xDevInforS;


//ISP下载设备设置
typedef struct _CH55xISPSETTING
{
ULONG IspInter face; //下载接口类型 0:USB,1:串口 2:网口
UCHAR IspMcuType; //芯片型号,芯片型号的最后两位,如CH563,则写0x63
UCHAR IspMcuSeries; //芯片系列 0:CH55X;1:CH56X

BOOL IsEnableLongRest; //使能上电复位期间的额外延时复位
BOOL IsXtOscStrong; //启用晶体振荡器增强对外驱动能力,CH554不支持
BOOL IsEnableResetPin; //指定手工复位输入引脚,CH554使用RST引脚,其他型号指定P5.7
BOOL IsEnableP0PullUp; //使能系统复位期间P0端口的内部上拉电阻,CH554不支持
BOOL IsMcuResetAfterIsp; //下载完成后是否复位直接运行目标程序(只支持网络模式)
BOOL IsEnableCfgBuf64K;
BOOL EnableIce; //CH55X,CH32FX复用为串口一键下载功能
BOOL EnableBootLoader;
BOOL IsSetNetDevMac;
UCHAR NetDevMacAddr[6]; //CH58X时,第一字节用来记录写保护块数
BOOL IsCodeProtect; //启用代码保护
BOOL IsFirstRunIAP; //上电后运行IAP
BOOL IsEnableIAP; //是否启用IAP
ULONG IAPStartAddr; //IAP起始地址
CHAR UserFileName[MAX_PATH]; //用户文件名
CHAR IapFileName[MAX_PATH]; //IAP文件名
CHAR DataFileName[MAX_PATH]; //Dataflash文件名

BOOL IsNoKeyDnAtSer; //界面,开启串口免铵键下载
UCHAR BootPinNum; //ISP下载配置脚
BOOL IsClearDataFlash; //清空DataFlash
转换成易语言
BOOL IsEnableUsbPnpNotify; //是否启用USB插拔通知
BOOL IsEraseAllCFlash;
BOOL IsEraseAllDFlash;
mPCH55X_USB_NOTIFY_ROUTINE UsbPnpNotifyRoutine; //插拔通知回调函数

ULONG LocalIP; //本地ISP IP地址
ULONG GatewayIP;
ULONG MaskIP;
BOOL IsSetDevIP;
ULONG dwDevIP;

mOutputPrint AppOutput; //应用程序信息打印函数
mAppendPrint AppAppendOutput; //应用程序信息追加打印函数

BOOL UILangIsCH; //中英文
UCHAR LV_RST_VOL; //门限电压
BOOL IsSimulat; //两线仿真调试接口使能
BOOL IsBootLoader; //引导程序使能
BOOL IsPorCtr;
BOOL IsUsbdPu;
BOOL IsUsbdMode;
BOOL IsStandbyRst;
BOOL IsStopRst;
BOOL IsIwdgSw;
UCHAR WPR_DATA[8];

BOOL IsEnLockup;
BOOL IsEnOutReset;
BOOL IsEnDebug;
UCHAR UserMem; //CH543作为LDO输出电压参数
UCHAR Baud[4];
}CH55xIspOptionS,PCH55xIspOptionS;


#pragma pack()

#define CH375_DEVICE_ARRIVAL 3 // 设备插入事件,已经插入
#define CH375_DEVICE_REMOVE 0 // 设备拔出事件,已经拔出


//CH55X ISP函数

/

USB下载可以实现插入后自动下载和一次多个设备下载
USB下载使用步骤:
1.设置ISP下载设置,设置下载接口,芯片型号,必须在所有操作前设置
WCH55x_SetIspOption,设置ISP下载设置
需要在插入时自动下载,需提前设置:CH55xIspOptionS->IsEnableUsbPnpNotify
2.通过USB搜索ISP下载设备,返回枚举的设备数,将返回的IspDevInfor设备数组信息保存
WCH55x_EnumDevices
3.将目标文件数据写入到mcu flash内,需指定设备序号
WCH55x_FlashProgram


串口下载,可以实现插入某个串口后自动下载
串口下载使用步骤
1.WCH55x_SetIspOption
设置ISP下载设置,设置下载接口,芯片型号,必须在所有操作前设置

2.WCH55x_EnumDevices
IspOption->IspInterface = 1:串口下载方式时,此函数将执行枚举电脑上所有的串口,返回枚举的串口数,将返回的IspDevInfor设备数组信息保存

3.WCH55x_GetIspDeviceInfor
下载前必须调用WCH55x_GetIspDeviceInfor函数去获取指定设备的信息,是否在线,芯片UID等。因为串口不支持即插即用,只能手工获取。
IspDevInfor->DevIsOnline=TRUE,表示已检测到设备已连接至该接口

4.将目标文件数据写入到mcu flash内,需指定设备序号
WCH55x_FlashProgram
/

//IspOption->IspInterface = 0:USB下载方式时,此函数将执行通过USB搜索ISP下载设备,返回枚举的设备数
//IspOption->IspInterface = 1:串口下载方式时,此函数将执行枚举电脑上所有的串口,返回枚举的串口数
//获取指定序号设备信息
BOOL WINAPI WCH55x_GetIspDeviceInfor(ULONG iIndex, //指定序号设备信息
PIsp55xDevInforS IspDevInfor);//设备信息
//设置ISP下载设置Ex
BOOL WINAPI WCH55x_SetIspOption(CH55xIspOptionS *IspOption);//ISP选项

//获取ISP下载设置
BOOL WINAPI WCH55x_GetIspOption(CH55xIspOptionS *IspOption); //ISP选项

//USB接口写EEPROM数据
BOOL WCH55x_WriteDataFlash(ULONG iIndex, //设备序号
ULONG StartAddr, //起始地址
ULONG *oWriteLen, //写入长度
PUCHAR DataBuf, //数据缓冲区
BOOL bIsErase);

//USB接口读EEPROM数据
BOOL WCH55x_ReadDataFlash(ULONG iIndex, //设备序号
ULONG StartAddr, //起始地址
ULONG *oReadLen, //写入长度
PUCHAR DataBuf); //数据缓冲区)

BOOL WINAPI WCH55xIsp_ReadConfig(ULONG DevI,
PUCHAR IapCfgVal, //4字节
PUCHAR IspCfgVal, //4字节
PUCHAR CFlashCfgVal, //4字节
PULONG BootVer,
PUCHAR UUID);
//取消操作
VOID WCH55x_StopOp();

//通过USB搜索ISP下载设备,返回枚举的设备数。旧版BTV230,只支持一个设备枚举
ULONG WINAPI WCH55x_EnumDevices(Isp55xDevInforS *IspDevInfor, //IspDevInfor:设备信息数组
UCHAR MaxDevCnt, //最大扫描设备数

¥ 需报价 Technology & Programming 匠迹众包 China
1 days ago

前提要求: 可提供源码,也可自己重写一份
1.使用易语言原生开发,不使用其他语言作为中间件
2.可提供仅存在两处问题的全套源码
3.如不使用源码自己写的情况下请注意一下问题
1.尽量使用较为简洁的调用方法如外部数据的相似方法:
如果真 (外部数据库1.打开SQL数据库 (“127.0.0.1”, “xx”, “xxxx”, “xxxx”, , ) = 真)
sql语句 = 外部数据库1.查询 (“查询语句”)
结果 = 到文本 (外部数据库1.读 (sql语句, “SS007”))

2.尽量不调用OCI或如果使用与Navicat for Oracle 类似的调用形式时需解决注册表残留和 Oracle 未完全卸载\其余IDE或调用软件占用等兼容问题保障成品软件在用户侧使用稳定流畅
3.包含增 删 查 改 的基础操作例子即可
4.如使用模块请提供模块源码
5.用户在实际使用时,不应要求其安装Oracle
6.制作人应对易语言语法十分了解不应出现为实现某项已有功能而特意写的循环或判断
7.代码使用中文
8.如调用模块请写好调用的提示信息
9.在用户使用时应保障其稳定性,在编写时应保障其简单调用性
10.禁止使用任何第三方库,可以使用精易等大众模块,(但我认为这是不必须的)

4.如修复既有代码则注意以下问题
1.重点修缮:解决查询后的结果都是问号的问题(可能是OCI通讯问题,也可能是编码转换问题)
2.重点修缮:解决无法使用正常文字传输问题(目前需要使用base64编码后传输 因为害怕出现问号)
3.选择修缮1:查看源码编写逻辑,看是否存在用户侧兼容问题 如注册表或服务上的问题
4.选择修缮2:解决使用管理员权限编译问题
5.编写结束后可录制视频展示效果,编译exe例子我在本地使用和测试连接
6.请给程序添加通用sql查询窗口已方便我输入sql语句查询调用结果是否正常
8.测试包含4台程序员编程电脑+2台用户机+2台纯净新装主机,可提供三套Oracle数据做向日葵连接调试
9.如工业企业,或实体行业有此应用并运行超两年以上的可优先选择
10.上述方式只是我的想法和事件结果,如你有更好更优的方式方法是十分欢迎的

¥ 500 Technology & Programming 匠迹众包 China
2 days ago