房屋出租管理系统
本系統(tǒng)是一套專門為小區(qū)物業(yè)設計開發(fā)的智能經(jīng)營管理軟件,該系統(tǒng)把先進的經(jīng)營
理念融入其中,從管理者的角度出發(fā),以客戶管理為切入點,把客戶管理與營業(yè)分析、員工考核、內(nèi)部管理等管理工作高度結合起來,形成一套完整獨到的不同于以往的管理系統(tǒng)。
包含以下幾個方面:
1:客戶管理
2:租賃管理
3:財務管理
4:統(tǒng)計報表
5:業(yè)務提醒
6:房屋代租
7:合同續(xù)簽
8:打印通知單
本系統(tǒng)是突破了現(xiàn)在一般軟件的設計模式,采用了圖形化的設計,使軟件操作簡單、直觀、方便、圖形化的操作讓人很容易接受和操作,功能強大;
文件:590m.com/f/25127180-496915760-4e77e1(訪問密碼:551685)
以下內(nèi)容無關:
-------------------------------------------分割線---------------------------------------------
某設備需要提供多路USB串口的功能給主機端使用,比如一路用作業(yè)務1通信功能,一路用作業(yè)務2通信功能,一路用作debug抓log用途,諸如此類。如下圖所示。
要實現(xiàn)上述設備功能,可以參考如下步驟。
1)首先,了解一下背景知識。Linux kernel為設備端USB驅(qū)動提供了名為USB Gadget的驅(qū)動框架,設備端要基于Linux系統(tǒng)實現(xiàn)USB device功能,都需要基于Gadget框架。各種USB class定義的功能,在設備端的實現(xiàn),稱之為USB function。常見的USB function,比如 serial, ecm, storage, video, audio等,kernel原生代碼都已經(jīng)實現(xiàn)了。產(chǎn)品開發(fā)的大部分工作是放在理解并使用這些代碼,并調(diào)試可能出現(xiàn)的bug;以及針對某些usb controller的特性,需要在function driver層面處理的時候,打一些補丁,當然這種補丁是很難合入kernel社區(qū)的,只能是在自家的產(chǎn)品上用用。
2)其次,了解一下gadget驅(qū)動代碼目錄結構。如下圖所示。
gadget驅(qū)動包含三大部分:
function驅(qū)動 —— 實現(xiàn)各種usb class功能
udc驅(qū)動 —— 實現(xiàn)usb controller driver
輔助驅(qū)動 —— configfs.c實現(xiàn)用戶空間配置usb, composite.c實現(xiàn)復合設備
進入function目錄,可以看到各種已經(jīng)實現(xiàn)的function,接下來我們要用到的serial function也在其中。
3)了解具體如何開啟usb串口的功能。其實很簡單,要開啟usb serial function driver,在kernel config中開啟以下CONFIG即可:
CONFIG_USB_GADGET=y
CONFIG_USB_U_SERIAL=y
CONFIG_USB_F_SERIAL=y
開啟以上CONFIG后,只是打開了usb driver支持serial的能力;要生成多路串口,還需要通過configfs動態(tài)配置相關功能,以下就是生成三路USB generic serial串口的示例:
1
2
3
4
5
6
7
8
9
10
11
12
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/gser.gs0
chmod 755 /sys/kernel/config/usb_gadget/g1/functions/gser.gs0
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/gser.gs1
chmod 755 /sys/kernel/config/usb_gadget/g1/functions/gser.gs1
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/gser.gs2
chmod 755 /sys/kernel/config/usb_gadget/g1/functions/gser.gs2
?
?
ln -s /sys/kernel/config/usb_gadget/g1/functions/gser.gs2 /sys/kernel/config/usb_gadget/g1/configs/b.1/f1
ln -s /sys/kernel/config/usb_gadget/g1/functions/gser.gs0 /sys/kernel/config/usb_gadget/g1/configs/b.1/f2
ln -s /sys/kernel/config/usb_gadget/g1/functions/gser.gs1 /sys/kernel/config/usb_gadget/g1/configs/b.1/f3
?
configfs本身的介紹,可參考kernel文檔:
Documentation\filesystems\configfs\configfs.txt
USB gadget configfs的使用介紹,可以參考kernel文檔:
Documentation\ABI\testing\configfs-usb-gadget
Documentation\ABI\testing\configfs-usb-gadget-serial
三路USB串口啟用成功后,在設備端會生成三個ttyGS設備:
/dev/ttyGS0
/dev/ttyGS1
/dev/ttyGS2
4)主機端看到的情況
主機端識別USB串口和加載相關驅(qū)動的方法,可以參考我的另一篇文章
加載usbserial驅(qū)動后,為什么adb不可用了
這里主要講一講主機端生成了多個名為ttyUSBx(x=0~n)的設備,我們?nèi)绾未_定它們與設備端多路USB串口(ttyGSx)的對應關系?
方法之一,當然可以通過遍歷測試串口通信的方式來找到對應關系。比如主機端用串口工具或者echo指令發(fā)送數(shù)據(jù),設備端用串口工具或者cat指令接收數(shù)據(jù),一個一個遍歷嘗試,能正常通信的,就說明兩邊是對應的。
總結
- 上一篇: 使用函数式编程优化代码
- 下一篇: 微软windows10易升_你可能不知道