graph TD
Start([Start initkscan]) --> DisableCB[ScanDuplexCB.Enabled := False]
DisableCB --> CheckConfig{Scanner.IsConfigured?}
CheckConfig -- Yes --> TryOpen[try]
subgraph Try_Detect
TryOpen --> OpenSrc[Scanner.OpenSource]
OpenSrc --> CheckDuplex{Scanner.DuplexCap > 0?}
CheckDuplex -- Yes --> EnableCB[ScanDuplexCB.Enabled := True]
CheckDuplex -- No --> CatchErr
EnableCB --> CatchErr{發生異常?}
CatchErr -- Yes --> DataLoadErr[DataLoading False, True] --> ExitInit
end
Try_Detect --> CloseSrc[Scanner.CloseSource]
CheckConfig -- No --> EndInit
CloseSrc --> EndInit
EndInit([End])