2014-12-26 38 views
0

我需要幫助,瞭解如何解決生成批量生產產品的唯一序列號或UID的這一問題。生成批量生產產品的唯一序列號

我將大量生產產品,截至目前我認爲我將製造> 50000個單位。當這些裝置製造好並準備就緒時,我必須在派遣之前對它們進行測試,並且在那個時間點我還要給每個人一個唯一的ID。

我正在考慮編寫一個應用程序來生成一個128位唯一號碼生成器應用程序並要求測試人員在他們的夾具上運行它,生成一個ID,分配ID然後執行測試。

但我的問題是,請看下面的插圖,如果我的同一個應用程序運行在說3(或更多)不同的夾具並行在同一時間,我如何確保生成的數字這些系統是從來沒有等於彼此?

如何以編程方式確保唯一序列號1!=唯一序列號2!=唯一序列號3

如果他們永遠都是平等的,那麼一旦他們外出,我會很難追蹤他們。

有一些硬件方法,例如使用Atmel或Maxim的UID芯片/ EEPROM,但它們會增加成本。我希望在軟件層面解決這個問題,並將硬件方法作爲最後的手段。

我發現測試夾具能夠運行C#Python應用程序。

請幫忙!

Illustration of Unique Serial # Generator application running on three different test jigs.

+2

想法A:每臺機器上的程序是否將UID插入全局UID數據庫,並在生成新UID時檢查該數據庫? –

+0

無論使用哪種配方,都要確保在每個批次中允許三個夾具具有足夠的唯一ID,如果您開始進一步生產,請再次執行相同的操作 –

+1

想法B:將每個生成的UID預先添加/追加每個生成的機器自己的唯一序列號? –

回答

2

你需要的是一個GUID生成器。由網絡ID和時間組成的GUID被認爲是唯一的。重複的可能性不大。

+1

C#有一個內建的Guid類。你可以調用'Guid.NewGuid()'來獲得一個隨機的Guid。請參閱:http://msdn.microsoft.com/en-us/library/system.guid%28v=vs.110%29.aspx – shortspider

0

我在一個類似的情況和solved it與集中的「發電機」,SQL中的存儲過程的幫助。

表結構:

CREATE TABLE [dbo].[UniqueKeys](
    [Id] [bigint] IDENTITY(1,1) NOT NULL, 
    [App] [nvarchar](100) NOT NULL, 
    [System] [nvarchar](100) NOT NULL, 
    [Key] [bigint] NOT NULL 
) ON [PRIMARY] 

下面是SP代碼:

CREATE PROCEDURE [dbo].[GetUniqueKeyTV] 
     @app VARCHAR(100) , 
     @sys VARCHAR(100) , 
     @retVal BIGINT OUT 
    AS 
     BEGIN 
      DECLARE @T TABLE([Key] BIGINT); 
      SET NOCOUNT ON 

      MERGE INTO dbo.UniqueKeys WITH (TABLOCK) AS Target 
       USING (VALUES 
        (@app , 
         @sys , 
         1 
        )) AS Source ([App], [System], [Key]) 
       ON (Target.App = Source.App 
        AND Target.[System] = Source.[System] 
        ) 
       WHEN MATCHED 
        THEN UPDATE 
         SET  Target.[Key] = Target.[Key] + 1 
       WHEN NOT MATCHED BY TARGET 
        THEN 
      INSERT (
        [App] , 
        [System] , 
        [Key] 

       ) VALUES 
       (Source.[App] , 
        Source.[System] , 
        Source.[Key] 

       ) OUTPUT 
        inserted.[Key] INTO @T; 
      SELECT @retVal = [Key] 
      FROM @T 

      SET NOCOUNT OFF 
     END 

    GO 

它可以讓你的應用程序和系統創建順序編號,但可以修改它來滿足特定的需要。