生成批量生产产品的唯一序列号
我需要帮助,了解如何解决生成批量生产产品的唯一序列号或UID的这一问题。生成批量生产产品的唯一序列号
我将大量生产产品,截至目前我认为我将制造> 50000个单位。当这些装置制造好并准备就绪时,我必须在派遣之前对它们进行测试,并且在那个时间点我还要给每个人一个唯一的ID。
我正在考虑编写一个应用程序来生成一个128位唯一号码生成器应用程序并要求测试人员在他们的夹具上运行它,生成一个ID,分配ID然后执行测试。
但我的问题是,请看下面的插图,如果我的同一个应用程序运行在说3(或更多)不同的夹具并行在同一时间,我如何确保生成的数字这些系统是从来没有等于彼此?
如何以编程方式确保唯一序列号1!=唯一序列号2!=唯一序列号3?
如果他们永远都是平等的,那么一旦他们外出,我会很难追踪他们。
有一些硬件方法,例如使用Atmel或Maxim的UID芯片/ EEPROM,但它们会增加成本。我希望在软件层面解决这个问题,并将硬件方法作为最后的手段。
我发现测试夹具能够运行C#或Python应用程序。
请帮忙!
你需要的是一个GUID生成器。由网络ID和时间组成的GUID被认为是唯一的。重复的可能性不大。
C#有一个内建的Guid类。你可以调用'Guid.NewGuid()'来获得一个随机的Guid。请参阅:http://msdn.microsoft.com/en-us/library/system.guid%28v=vs.110%29.aspx – shortspider
我在一个类似的情况和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
它可以让你的应用程序和系统创建顺序编号,但可以修改它来满足特定的需要。
想法A:每台机器上的程序是否将UID插入全局UID数据库,并在生成新UID时检查该数据库? –
无论使用哪种配方,都要确保在每个批次中允许三个夹具具有足够的唯一ID,如果您开始进一步生产,请再次执行相同的操作 –
想法B:将每个生成的UID预先添加/追加每个生成的机器自己的唯一序列号? –