1.使用到的模組(1)康威電子STM32主控板(2)康威電子ADS1256 24Bit ADC(3)PC機:執行基於串列埠除錯助手的上位機軟體 host computer software2.想實現的目的微控制器採集“指定數量(801條)”資料,透過串列埠反饋給PC機3.出現的問題一開始指定數量為41時,可以正常上傳並且可以正常停止採集,但是一旦指定的資料量達到501,801的時候,微控制器就停不下來了,會採集超過指定數量的資料,存到資料庫中。STM32中相關的部分程式碼4.問題的解決經過正點原子qq群裡大佬的指點,才發現是自己變數的定義出錯了STM32中相關的部分程式碼uint8_t 的取值範圍是 0-256 ,那麼我指定 501 或者 801 已經超過了它的取值範圍,所以STM32才停不下來!!目前已經修改了程式,STM32也可以正常停止採集資料了!!修改後的變數定義部分的程式5.引發的思考比如說我的變數 freq_num 已經到255了,那麼再加一,它會變成什麼呢?據說會變成0 ( 這也可以解釋為什麼STM32停不下來了 ),具體的需要自己寫個簡單程式碼來驗證。6.目前的問題當然STM32已經可以正常停止採集資料了,但是上傳給Qt上位機後,會有資料丟失的現象,因為資料庫中的資料數量沒達到我指定的數量。資料庫中記錄的資料需要進一步判斷是哪個方面的問題,如(1)STM32的資料傳送有問題?(2)Qt上位機沒有及時接收?(3)資料庫操作問題?可以先用XCOM來接收微控制器返回的資料,看下是不是801條!!Aug. 5. 2019上面說的問題,我重新使用XCOM來接收STM32返回的資料,發現XCOM可以完整接收到STM32返回的資料,那麼說明,目前出問題的地方還是我的Qt上位機!!XCOM接收的資料,我先是存到了txt檔案裡面,後面再匯入了一個excel之後,我又重新使用自己開發的Qt上位機採集資料,我這次突發奇想把接收窗口裡的資料直接複製到一個txt檔案中,再匯入excel檔案中,統計資料的個數,再與資料庫中儲存的資料進行比較,發現驚人的現象——兩個地方的資料的數量居然不一樣!比較資料的數量Qt上位機之後我又做了一次,還是出現類似的結果,說明確實是我在向資料庫插入資料時,產生了遺漏!那麼,問題又進一步縮小範圍!!
1.使用到的模組(1)康威電子STM32主控板(2)康威電子ADS1256 24Bit ADC(3)PC機:執行基於串列埠除錯助手的上位機軟體 host computer software2.想實現的目的微控制器採集“指定數量(801條)”資料,透過串列埠反饋給PC機3.出現的問題一開始指定數量為41時,可以正常上傳並且可以正常停止採集,但是一旦指定的資料量達到501,801的時候,微控制器就停不下來了,會採集超過指定數量的資料,存到資料庫中。STM32中相關的部分程式碼4.問題的解決經過正點原子qq群裡大佬的指點,才發現是自己變數的定義出錯了STM32中相關的部分程式碼uint8_t 的取值範圍是 0-256 ,那麼我指定 501 或者 801 已經超過了它的取值範圍,所以STM32才停不下來!!目前已經修改了程式,STM32也可以正常停止採集資料了!!修改後的變數定義部分的程式5.引發的思考比如說我的變數 freq_num 已經到255了,那麼再加一,它會變成什麼呢?據說會變成0 ( 這也可以解釋為什麼STM32停不下來了 ),具體的需要自己寫個簡單程式碼來驗證。6.目前的問題當然STM32已經可以正常停止採集資料了,但是上傳給Qt上位機後,會有資料丟失的現象,因為資料庫中的資料數量沒達到我指定的數量。資料庫中記錄的資料需要進一步判斷是哪個方面的問題,如(1)STM32的資料傳送有問題?(2)Qt上位機沒有及時接收?(3)資料庫操作問題?可以先用XCOM來接收微控制器返回的資料,看下是不是801條!!Aug. 5. 2019上面說的問題,我重新使用XCOM來接收STM32返回的資料,發現XCOM可以完整接收到STM32返回的資料,那麼說明,目前出問題的地方還是我的Qt上位機!!XCOM接收的資料,我先是存到了txt檔案裡面,後面再匯入了一個excel之後,我又重新使用自己開發的Qt上位機採集資料,我這次突發奇想把接收窗口裡的資料直接複製到一個txt檔案中,再匯入excel檔案中,統計資料的個數,再與資料庫中儲存的資料進行比較,發現驚人的現象——兩個地方的資料的數量居然不一樣!比較資料的數量Qt上位機之後我又做了一次,還是出現類似的結果,說明確實是我在向資料庫插入資料時,產生了遺漏!那麼,問題又進一步縮小範圍!!